我的问题是我必须在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
。
正如 @Felix Kling 在评论中所说,如果你想使用原生 js 数字,你也会受到它们的限制。
但是,您可以将 大数字打印为字符串,例如
yy.toString()
。
你想将它们从字符串转换为原生 js 数字,而忽略缺点吗?使用
parseFloat()
:parseFloat(ee.toString())
在 JavaScript 中,包
calc-number
比 bignumber
更有用
import calcNumber from 'calc-number'
const result = calcNumber('0.1+0.2')
console.log(result);// result 0.3