PHP json_encode导致精度丢失问题
2020-03-24 本文已影响0人
Mr_Arvin
之前均没注意到这个情况,今天在项目中遇到了精度丢失问题,经过排查确定是函数json_encode导致的.
$val = 0.288000000 * 100;
$arr = [
"key1" => "asdasdasda",
"key2" => $val
];
var_dump(json_encode($arr));
以上结果为:
{"key1":"asdasdasda","key2":28.799999999999997}
无效方案:
网上有人给出的用 php.ini 中 serialize_precision (序列化精度) 的大小来解决这个问题。将这个值改为 小于 17 的数字,但我改为了-1进行测试,发现并未解决精度丢失问题.
有效方案:
将计算结果转换为字符串类型再进行处理.
$val = (string)(0.288000000 * 100);