PHP 对 float 类型使用 JSON_encode () 精度缺失

简介

在项目中遇到过对 float 类型的数字进行 json_encode() 出现精度缺失的问题。

代码

    $info = 26.54;
    $res = json_encode($info);
    var_dump($res);

运行结果

string(18) "26.539999999999999"

原因

  1. 查看 PHP 的 php.ini 文件

    可通过 php --ini 查看引入的 php.ini 文件位置是在哪里

    cqhC7nn9hk.png!largePWSYKkIfXy.png!largeV55u5QRNjG.png!large
  2. 更改配置

    按照网上的说法,改为 17 以下的数字就可以解决

    serialize_precision = 16

  3. 再次运行

    string(5) "26.54"

参考

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1

改配置麻烦 ini_set('serialize_precision',16)

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!