美文网首页
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