【发布时间】:2014-05-10 06:20:50
【问题描述】:
JavaScript 可以很好地处理以下数学:
var result = (20000000 * 48271) % 0x7FFFFFFF;
但在某些编程语言中,第一次 int*int 乘法会导致值太大而无法保存在标准的 32 位整数中。有没有办法在 JavaScript 中“模拟”这个,看看如果乘法导致整数溢出,结果会是什么?
【问题讨论】:
-
@FélixSaparelli 这不是重复的,
20000000 * 48271仍然在 JavaScript Number 的 52 位精度范围内;它不会溢出。我正在尝试模拟 32 位溢出。 -
我通过从结果中减去 2^32 次来作弊,但我认为这不是非常有效或非常聪明:P
-
if Math.abs(int * int) is greater than (2^32)/2 then log value and continue?
标签: javascript integer-overflow