PHP字符串到locale float

时间:2017-05-26 10:05:20

标签: php format locale

我尝试将"2,249.90000000"解析为带有局部小数的浮点数。 我希望它2249,90000000. (nl_NL, money/eur)

我尝试过多种解决方案,比如floatval或(float)。因为number_format想要一个数字而不是一个字符串。

我没有在SO上找到正确的解决方案,所以我创建了一个新问题,但我知道这个问题只会被问过一次。

2 个答案:

答案 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;