为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript对大整数求和

JavaScript对大整数求和

天涯尽头无女友 2019-12-04 10:08:30
在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中使用整数而不是浮点数?还是大整数求和?
查看完整描述

3 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

JavaScript在内部使用浮点数。


一个数字可以在不损失精度的情况下达到的JavaScript的最高整数值是多少?


换句话说,您不能使用超过53位。在某些实现中,您可能被限制为31岁。


尝试将位存储在多个变量中,使用字符串或获取bignum库,或者如果只需要处理整数,则使用biginteger库。


查看完整回答
反对 回复 2019-12-04
?
慕慕森

TA贡献1856条经验 获得超17个赞

javascript现在对有了实验性支持BigInt。

在撰写本文时,仅chrome支持此功能。


caniuse尚无任何条目。


BigInt可以与构造函数一起使用,例如,BigInt(20)也可以附加n,例如20n


例:


const max = Number.MAX_SAFE_INTEGER;


console.log('javascript Number limit reached', max + 1 === max + 2) // true;


console.log('javascript BigInt limit reached', BigInt(max) + 1n === BigInt(max) + 2n); // false


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 320 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信