我尝试将"2,249.90000000"
解析为带有局部小数的浮点数。
我希望它2249,90000000. (nl_NL, money/eur)
我尝试过多种解决方案,比如floatval或(float)。因为number_format想要一个数字而不是一个字符串。
我没有在SO上找到正确的解决方案,所以我创建了一个新问题,但我知道这个问题只会被问过一次。
答案 0 :(得分:1)
您可以使用此代码,来自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)))
);
}
答案 1 :(得分:0)
我正在编辑我之前的答案,因为它不正确:
$number = '2,249.90000000';
$number = floatval(str_replace(',','', $number));
echo $number;