php decode数据引起精度丢失

pessimiis 2017-06-05 07:25:03
情况是这样的,爬虫那边传给我json数据,然后,我拿到之后,做完过滤之后,进行decode发现,值为float的字段,精度丢失了,就比如,

处理之前 "compDesMatch":9.61
处理之后 'compDesMatch' => 9.6099999999999994316

爬虫传过来给我应该是作为字符串来处理的,所以float的值没有变化,decode的时候,float的值,就应该作为float来处理了啊,但是为什么转化成了double。是php decode的默认处理机制么?

下午找了一下午,也没找到什么有用的资料,就发个贴问下大家,有人懂的话,请告诉我下,十分感谢!
...全文
663 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pessimiis 2017-06-11
  • 打赏
  • 举报
回复
引用 3 楼 fdipzone 的回复:
使用round处理一下

echo round(9.6099999999999994316,2);
谢谢,我动态设置了一下那个precision属性,也解决问题了。
pessimiis 2017-06-11
  • 打赏
  • 举报
回复
引用 2 楼 dingsongtao 的回复:
php是由C延伸出来的,确实会出现这种情况。 具体原因好像是二进制01运算的问题。。
对的,确实会有精度丢失的问题
傲雪星枫 2017-06-11
  • 打赏
  • 举报
回复
问题解决了就好。
傲雪星枫 2017-06-09
  • 打赏
  • 举报
回复
使用round处理一下

echo round(9.6099999999999994316,2);
Dleno 2017-06-09
  • 打赏
  • 举报
回复
php是由C延伸出来的,确实会出现这种情况。 具体原因好像是二进制01运算的问题。。
xuzuning 2017-06-05
  • 打赏
  • 举报
回复
浮点数没有精度的概念,只有有效数位的概念

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧