尝试用 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())
我的问题是我必须对 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())