打破常规思维
自由 开放 平等 互助

解决php>=7.1 json_encode函数丢失精度问题

起因

最近在给项目做升级,从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,但我测试没有生效。

测试以上代码有用,使用时可以自己改着尝试一下

 

 

赞(1) 打赏
未经允许不得转载:时光日记 » 解决php>=7.1 json_encode函数丢失精度问题

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏