我想在JavaScript中做一些简单的数学运算(?):

( 1023 * 2 ) + 76561197960265728;

我已经在PHP中进行了相同的计算,但结果不同:

JavaScript: 76561197960267780

PHP: 76561197960267774 (正确的结果)

然后我尝试了以下内容: http//jsfiddle.net/YxBa4/

在计算中高数字的JavaScript中是否存在“限制”?

//编辑:

感谢您的回答,我现在使用BigNumber

我现在的完整工作代码:

在JSFiddle上

===============>>#1 票数: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和`来检测系统上的最大整数大小

===============>>#2 票数: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值容量。

===============>>#3 票数:1

你可以使用PHP的bcmath扩展和它的JS转换来获得两种语言的一致结果:

bcadd('76561197960267774', '76561197960267774');
// 153122395920535548 

http://jsfiddle.net/zELmm/

http://phpjs.org/functions/bcadd/

http://php.net/manual/en/function.bcadd.php

  ask by CREE7EN translate from so

未解决问题?本站智能推荐: