我正在尝试用JavaScript做一些简单的数学运算(?):
( 1023 * 2 ) + 76561197960265728;
我已经在PHP中进行了相同的计算,但结果不同:
JavaScript: 76561197960267780
PHP: 76561197960267774 (正确的结果)
然后我尝试了以下内容: http://jsfiddle.net/YxBa4/
JavaScript中是否存在计算中高数字的“限制”?
//编辑:
感谢您的回答,我现在使用BigNumber。
我现在的完整工作代码:
答案 0 :(得分:3)
值76561197960265730
id大于javascript中允许的最大数量大小。请注意,Javascript中没有真正的整数只是Number
类型,它始终是64位浮点值并且与平台无关。但是最大可能的整数值仅为2 ^ 53,因为至少为逗号和标志位后面的数字保留了11位。
在您的示例中,您只需执行以下操作即可看到:
alert(76561197960265728);
即使没有任何计算,什么会给你一个错误。 (输出:' 76561197960265730')
在php中,最大整数值取决于您的系统。如果您使用的是64位系统,则MAX整数值为2 ^ 64,大于(2 * 1023)+ 76561197960265728。这样可以在PHP中成功计算 - 在64位系统上
在PHP中,您可以通过读取常量PHP_INT_MAX
和“
答案 1 :(得分:3)
在Javascript中,数字是64位浮点值。最大整数(幅度)为253,或Math.pow(2,53),或9007199254740992.取自:http://notepad2.blogspot.ca/2012/04/maximum-integer-in-javascript.html
超过限制你是1351079458714420。
整数的大小取决于平台,尽管最大值约为20亿是通常的值(32位有符号)。 64位平台的最大值通常约为9E18。 PHP不支持无符号整数。整数大小可以使用常量PHP_INT_SIZE确定,最大值可以使用自PHP 4.4.0和PHP 5.0.5以来的常量PHP_INT_MAX。取自http://php.net/manual/en/language.types.integer.php
因此,基本上PHP允许您根据PHP配置为Integer值提供更多容量。
答案 2 :(得分:1)
你可以使用PHP的bcmath扩展和它的JS转换来获得两种语言的一致结果:
bcadd('76561197960267774', '76561197960267774');
// 153122395920535548