JavaScript没有正确添加大数字(但非常接近)

Aar*_*ron 2 javascript math loops exponent

我正在尝试添加一个大数字,但它没有正确出来.

var searchSpace = 36;
var length = 11;
var combinations = 0;

for(var i = 1; i <= length; i++) {
    combinations += Math.pow(searchSpace, i);
}
Run Code Online (Sandbox Code Playgroud)

该变量combinations最终为135,382,323,952,046,190,这不太正确.它应该是135,382,323,952,046,196(如何关闭6?!)任何想法?

tem*_*def 7

JavaScript使用IEEE-754 64位双精度作为其数字格式.这些不能代表任意精确的值; 当您超过某个阈值并开始存储接近(但不完全相同)实际值的值时,它们会变得不正确.根据这个早期的答案,可以准确存储的最大值是2 53,大约是9×10 15.您的号码(大约是1.3×10 17)比这大,所以(很有可能)它无法准确表示.

如果您想在JavaScript中获得确切的答案,则需要使用支持任意精度整数的库.一个快速的谷歌搜索出现了这个库,但我无法保证它的准确性.

希望这可以帮助!

  • 确切地说,它最多只能包含53位(大约16位十进制数字).如果计算在任何时间点都不超过此容量,则不会损失精度. (3认同)