长正整数被格式化成科学记数法精度丢失

最近调淘宝一个接口(获取图片分类)返回(分类)[b]id编号时,返回的是科学记数法[/b]


14602127435982492(17位长度)
例:json_decode(json_encode(14602127435982492)); 返回数据为:1.4602127435982E+16
我用number_format1.4602127435982E+16, 0, '', '');转回去得到结果:14602127435982000


然后再调另一个接口,怎么也调不通,后来写了Java程序,调接口返回的数据是正常的。
所以我觉的是淘宝那边的问题,后来提交Bug上去,得到回复是PHP浮点精度的问题,在php.ini中配置修改一下就好了。

我敢紧查看了一下。确实如此。


; The number of significant digits displayed in floating point numbers.
; http://php.net/precision
precision = 14
;浮点型数据显示的有效位数


[b]我将precision修改为17,重启服务器。则返回正常数据[/b](precision值大于17位返回的结果是一样的)


扩展阅读:

precision = 17 参数为:11999999999999999(17位长度)
json_decode(json_encode(11999999999999999))
结果为:12000000000000000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值