长正整数被格式化成科学记数法精度丢失_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > 长正整数被格式化成科学记数法精度丢失

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

 2014/6/25 23:02:04  jinhanjiang  程序员俱乐部  我要评论(0)
  • 摘要:最近调淘宝一个接口(获取图片分类)返回(分类)id编号时,返回的是科学记数法14602127435982492(17位长度)例:json_decode(json_encode(14602127435982492));返回数据为:1.4602127435982E+16我用number_format1.4602127435982E+16,0,'','');转回去得到结果:14602127435982000然后再调另一个接口,怎么也调不通,后来写了Java程序,调接口返回的数据是正常的
  • 标签:
最近调淘宝一个接口(获取图片分类)返回(分类)id编号时,返回的是科学记数法

class="php">
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

上一篇: Windows 环境安装 mongodb 客户端 RockMongo 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名