美文网首页
PHP json_encode导致精度丢失问题

PHP json_encode导致精度丢失问题

作者: Mr_Arvin | 来源:发表于2020-03-24 18:16 被阅读0次

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

      本文链接:https://www.haomeiwen.com/subject/fakayhtx.html