<?php
$int = 1968401665333658496;
echo json_encode( array("$int",$int) );
?>
Run Code Online (Sandbox Code Playgroud)
在浏览器中收到: [ "1968401665333658496" , 1968401665333658600 ]
它"舍入"我的整数?
顺便说一下:PHP_INT_MAX = 9223372036854775807 ~ PHP Version 5.3.2-1ubuntu4.7
这些巨大的整数在任何地方都没有问题(PHP,MySQL或Javascript)
- 直到json_encode(它搞砸了(默默地顺便说一句......)
Javascript 没有整数的概念,根据标准,所有数字都是 IEEE 双精度数,这意味着它们有 52 位尾数。这导致2^53在任何精度损失之前实际最大“整数”值。
我不确定你如何在 JS 中没有遇到这么大的数字问题 - 如果你没有,你的 JS 实现就不符合标准。