js大数计算

最近项目需要对超大数(20几位数)进行基本运算,感觉天空飘来一片乌云~~
如果后台返回的大数不是字符串的话,返回的数值就会变成科学计数法的值,将科学计数法转成字符串也麻烦。
推荐大数计算插件:

big-integer

看描述说可以计算var largeNumber = bigInt("75643564363473453456342378564387956906736546456235345");这么大的数,于是尝试了一下。
说明中有一段:Note that Javascript numbers larger than 9007199254740992 and smaller than -9007199254740992 are not precisely represented numbers and will not produce exact results. If you are dealing with numbers outside that range, it is better to pass in strings.
说明文档写明了所带方法,其中除法方法有两个(divide,divmod)一个不带余数,一个带余数。
divmod方法返回两个属性,quotient(整数部分),remainder(小数部分)。
将整数部分和小数部分拼接:

bigInt('75643564363473453456342378564387').divmod(10000000000000).quotient.toString()+'.'+ bigInt('75643564363473453456342378564387').divmod(10000000000000).remainder.toString()

不过发现有一个范围的大数除以10的N次方后的结果不准确。
所以放弃。

bignumber

bignumber的使用方法和其他计算插件差不多。
科学计数法转换:

 console.log(BigNumber(1.2000000001e+43).toString(10))   //12000000001000000000000000000000000000000000

除法:

BigNumber(1.2000000001e+43).div(1000000000000)

===============================此处分割线
对于大数计算,ES新推出了数据类型BigInt,只需要在数字末尾加n字母,就表示BigInt类型。

相关文档可转至:https://segmentfault.com/a/1190000019912017?utm_source=tag-newest

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值