<?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(
)拧紧它(默默地顺便说一下......)
答案 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)
引用您的整数值并在客户端上处理转换。