浏览 2322 次
锁定老帖子 主题:长正整数被格式化成科学记数法精度丢失
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2014-06-25
最后修改:2014-06-25
14602127435982492(17位长度) 例:json_decode(json_encode(14602127435982492)); 返回数据为:1.4602127435982E+16 我用number_format(1.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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |