PHP json_encode导致精度丢失问题

之前均没注意到这个情况,今天在项目中遇到了精度丢失问题,经过排查确定是函数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);

你可能感兴趣的:(PHP json_encode导致精度丢失问题)