我试图将"2,249.90000000"
解析成带局部小数点的浮点数。 我想要它2249,90000000. (nl_NL, money/eur)
PHP字符串到语言环境浮点数
我已经尝试了多种解决方案,如floatval或(浮动)。因为number_format需要一个数字而不是一个字符串。
我没有在SO上找到正确的解决方案,所以我创建了一个新问题,但我意识到这个问题有一次提出。
我试图将"2,249.90000000"
解析成带局部小数点的浮点数。 我想要它2249,90000000. (nl_NL, money/eur)
PHP字符串到语言环境浮点数
我已经尝试了多种解决方案,如floatval或(浮动)。因为number_format需要一个数字而不是一个字符串。
我没有在SO上找到正确的解决方案,所以我创建了一个新问题,但我意识到这个问题有一次提出。
您可以使用此代码,代码从第一个音符的floatval manual。
如果您在2249,90000000
检查this demo
<?php
var_dump(tofloat("2,249.90000000"));
function tofloat($num) {
$dotPos = strrpos($num, '.');
$commaPos = strrpos($num, ',');
$sep = (($dotPos > $commaPos) && $dotPos) ? $dotPos :
((($commaPos > $dotPos) && $commaPos) ? $commaPos : false);
if (!$sep) {
return floatval(preg_replace("/[^0-9]/", "", $num));
}
return floatval(
preg_replace("/[^0-9]/", "", substr($num, 0, $sep)) . '.' .
preg_replace("/[^0-9]/", "", substr($num, $sep+1, strlen($num)))
);
}
冉这并得到'float(2249.9)' –
@JuanMendes,删除floatval将导致相同长度的字符串格式。如果使用floatval,这里需要填充到相同的长度。 –
我编辑我以前的答案,因为它是不正确的:
$number = '2,249.90000000';
$number = floatval(str_replace(',','', $number));
echo $number;
这不是要输出224,990,000,000吗? –
你是对的胡安门德斯,我没有测试它...只是编辑一个更容易和工作的一个 –
什么是你想要的区域设置想要的吗? – Raptor
@Raptor nl_NL。在这种情况下,它是欧元。 (我会将它添加到问题中) – NVO
不是'2249.90000000'? –