【发布时间】:2011-06-01 05:55:04
【问题描述】:
在 JavaScript 中,我想使用以下方法创建大型布尔数组(54 个元素)的二进制哈希:
function bhash(arr) {
for (var i = 0, L = arr.length, sum = 0; i < L; sum += Math.pow(2,i)*arr[i++]);
return sum;
}
简而言之:它创建了存储布尔数组的最小整数。现在我的问题是 javascript 显然使用 floats 作为默认值。我必须创建的最大数字是 2^54-1 但是一旦 javascript 达到 2^53 它就会开始做奇怪的事情:
9007199254740992+1 = 9007199254740994
有没有办法在javascript中使用整数而不是浮点数?还是大整数求和?
【问题讨论】:
-
Javascript 不仅默认使用浮点类型,它还没有 任何其他数字类型 - 显然不是该语言的“好部分”。跨度>
标签: javascript biginteger