警告:json_encode()中的大量错误

时间:2011-04-04 16:56:22

标签: php ajax json

<?php  
$int = 1968401665333658496;  
echo json_encode( array("$int",$int) );  
?>  

在浏览器中收到:[ "1968401665333658496" , 1968401665333658600 ]

它“舍入”我的整数?

顺便说一下:PHP_INT_MAX = 9223372036854775807 ~ PHP Version 5.3.2-1ubuntu4.7
这些巨大的整数在任何地方都没有问题(PHP,MySQL或Javascript)
- 直到json_encode()拧紧它(默默地顺便说一下......)

3 个答案:

答案 0 :(得分:4)

这不仅仅是一个JSON问题。如果你把

alert(1968401665333658496);

在firebug控制台中,您获得1968401665333658600

你可能正在达到JS最大值。

这里有一个讨论:What is JavaScript's highest integer value that a Number can go to without losing precision?

答案 1 :(得分:2)

Javascript没有整数概念,根据标准,所有数字都是IEEE双精度数,这意味着它们有52位尾数。在精度损失之前,这会导致2^53的实际最大“整数”值。

我不确定你如何在JS中没有这么大的数字问题 - 如果你没有JS实现不符合标准。

答案 2 :(得分:1)

引用您的整数值并在客户端上处理转换。