尝试用 bignumber.js 处理大数字

Trying to handle big numbers with bignumber.js

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

1.1e-40 + 1.1e-40 

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

的库

As explained in the API,执行计算你做:

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

var yy = y1.plus(y2);

然而,yyreturns一个对象

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

我怎样才能用这个找回原来的号码?

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

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

但是,您可以像 yy.toString() 一样打印 bignumbers as strings

您想将它们从字符串转换为原生 js 数字,而忽略缺点吗?使用 parseFloat(): parseFloat(ee.toString())