`
jinhanjiang
  • 浏览: 18422 次
  • 性别: Icon_minigender_1
  • 来自: 勉县
文章分类
社区版块
存档分类
最新评论

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

PHP 
阅读更多
最近调淘宝一个接口(获取图片分类)返回(分类)id编号时,返回的是科学记数法

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
;浮点型数据显示的有效位数


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


扩展阅读:
precision = 17 参数为:11999999999999999(17位长度)
json_decode(json_encode(11999999999999999))
结果为:12000000000000000

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics