尝试使用 bignumber.js 处理大数字

问题描述 投票:0回答:2

我的问题是我必须在javascript中进行大数字(大小数)的计算,例如:

1.1e-40 + 1.1e-40 

Javascript 仅支持最多 16 位精度。所以我恢复到 MikeMcl bignumber.js

的库

如 API 中所述,要执行计算,您需要执行以下操作:

var y1 = new BigNumber(1.1e-40)   
var y2 = new BigNumber(1.1e-40)  

var yy = y1.plus(y2);

但是,yy 返回一个带有

的对象
c: [220], e: -40 and s: 1

如何使用它取回原始号码?

例如我尝试过:

yy.c * Math.pow(10, yy.e)
但这会产生舍入错误:
2.1999999999999998e-38

javascript bignum bignumber.js
2个回答
3
投票

正如 @Felix Kling 在评论中所说,如果你想使用原生 js 数字,你也会受到它们的限制。

但是,您可以将 大数字打印为字符串,例如

yy.toString()

你想将它们从字符串转换为原生 js 数字,而忽略缺点吗?使用

parseFloat()
parseFloat(ee.toString())


0
投票

在 JavaScript 中,包

calc-number
bignumber

更有用
import calcNumber from 'calc-number'

const result = calcNumber('0.1+0.2')
console.log(result);// result 0.3
© www.soinside.com 2019 - 2024. All rights reserved.