将逗号作为小数点的数字转换为浮点数
2022-08-30 07:57:23
我有一个价格列表,用逗号表示小数点,用点作为千位分隔符。
一些例子:
12,30
116,10
1.563,14
这些格式来自第三方。我想将它们转换为浮点数并将它们加在一起。
最好的方法是什么?number_format似乎不适用于这种格式,str_replace似乎有些过分,因为我必须在每个数字上做一次。
有没有更好的方法?谢谢。
我有一个价格列表,用逗号表示小数点,用点作为千位分隔符。
一些例子:
12,30
116,10
1.563,14
这些格式来自第三方。我想将它们转换为浮点数并将它们加在一起。
最好的方法是什么?number_format似乎不适用于这种格式,str_replace似乎有些过分,因为我必须在每个数字上做一次。
有没有更好的方法?谢谢。
使用来删除点并不过分。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密集程度最低的方法,即使您使用一些花哨的功能来执行此操作,也很有可能这就是它在引擎盖下所做的。
此函数兼容以点或逗号为小数的数字
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