在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显然使用 浮点数 作为默认值。我必须创建的最大数量是2 ^ 54-1,但是一旦javascript达到2 ^ 53,它就会开始做一些奇怪的事情:
9007199254740992+1 = 9007199254740994
有没有办法在JavaScript中使用整数而不是浮点数?还是大整数求和?
JavaScript在内部使用浮点数。
换句话说,您不能使用超过53位。在某些实现中,您可能被限制为31岁。
尝试将位存储在多个变量中,使用字符串或获取bignum库,或者如果只需要处理整数,则使用biginteger库。