起因
最近在给项目做升级,从php5.x升级到php7.2发现一个变量类型为float,值为1.23,使用json_encode函数后该值变为了1.229999999995,精度丢失了!!!
解决方法
在框架入口处加入以下兼容代码即可
/** * 解决php>=7.1版本 json_encode丢失精度的问题 * https://stackoverflow.com/questions/42981409/php7-1-json-encode-float-issue */ if (version_compare(phpversion(), '7.1', '>=')) { ini_set('precision', 14); ini_set('serialize_precision', 14); }
注意:官方给的建议是 serialize_precision 改为 -1,但我测试没有生效。
测试以上代码有用,使用时可以自己改着尝试一下
评论前必须登录!
注册