将逗号作为小数点的数字转换为浮点数

2022-08-30 07:57:23

我有一个价格列表,用逗号表示小数点,用点作为千位分隔符。

一些例子:

12,30
116,10
1.563,14

这些格式来自第三方。我想将它们转换为浮点数并将它们加在一起。

最好的方法是什么?number_format似乎不适用于这种格式,str_replace似乎有些过分,因为我必须在每个数字上做一次。

有没有更好的方法?谢谢。


答案 1

使用来删除点并不过分。str_replace()

$string_number = '1.512.523,55';
// NOTE: You don't really have to use floatval() here, it's just to prove that it's a legitimate float value.
$number = floatval(str_replace(',', '.', str_replace('.', '', $string_number)));

// At this point, $number is a "natural" float.
print $number;

这几乎可以肯定是您可以执行此操作的CPU密集程度最低的方法,即使您使用一些花哨的功能来执行此操作,也很有可能这就是它在引擎盖下所做的。


答案 2

此函数兼容以点或逗号为小数的数字

function floatvalue($val){
            $val = str_replace(",",".",$val);
            $val = preg_replace('/\.(?=.*\.)/', '', $val);
            return floatval($val);
}

这适用于所有类型的输入(美式或欧式)

echo floatvalue('1.325.125,54'); // The output is 1325125.54
echo floatvalue('1,325,125.54'); // The output is 1325125.54
echo floatvalue('59,95');        // The output is 59.95
echo floatvalue('12.000,30');    // The output is 12000.30
echo floatvalue('12,000.30');    // The output is 12000.30

推荐