最近调淘宝一个
接口(获取图片分类)返回(分类)
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