当遇到带有千分符格式的数字(应该算是字符串)进行计算会有数字格式不正确的提示 :A non well formed numeric value encountered;下面就进行解决此问题。
php提供了number_format可以快速将数字格式转化成带有千分符的数字,但未提供直接反向转换的的方法,如下是将 number_format 转换
$a = '1231231231.12345678';
$b = number_format( $a, 2, '.', ',' );
echo $b;
// 结果
>> 1,231,231,231.12
下面我们将带有千分符格式的字符串1,231,231,231.12再转化为正常的数字格式
方法一:使用str_replace函数进行字符串替换
$c = '1,231,231,231.12';
$d = (float)str_replace(',', '', $c);
echo $d;
// 结果
>> 1231231231.12
方法二:使用数组函数分割后拼接得到
$c = '1,231,231,231.12';
$e = (float)implode( '', explode( ',', $c ) );
echo $e;
// 结果
>> 1231231231.12 // 结果
完整测试结果
$a = '1231231231.12345678';
$b = number_format( $a, 2, '.', ',' );
echo ">>number_format格式化的结果\n";
echo $b;
$c = '1,231,231,231.12';
$d = (float)str_replace(',', '', $c);
echo "\n>>str_replace后的结果\n";
echo $d;
$e = (float)implode( '', explode( ',', $c ) );
echo "\n>>数组函数分割后拼接后的结果\n";
echo $e;
输出结果为:
>>number_format格式化的结果
1,231,231,231.12
>>str_replace后的结果
1231231231.12
>>数组函数分割后拼接后的结果
1231231231.12