Javascript:防止parseFloat将大数字转换为科学表示法



我在一个节点应用程序中有一些数据,这些数据是字符串格式的数字。我试图解析它们,并用parseFloat(num).toFixed(3)四舍五入到3位小数。由于数字非常大,它会自动将它们转换为科学记数法(例如2.0210702881736412e+37(。我切换到使用parseInt((、Number((,但没有任何作用。我该如何解决这个问题?

数据对象非常巨大,所以我怀疑是否使用将指数形式转换为十进制的自定义转换器函数,因为这可能会影响性能。

使用BigInt

const num = BigInt(2.0210702881736412e+37);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt

BigInt值在某些方面与Number值相似,但在一些关键问题上也有所不同:BigInt的值不能与内置Math对象中的方法一起使用,也不能在操作中与Number值混合使用;它们必须被强制为相同的类型。但是,要小心来回强制值,因为当BigInt值被强制为Number值时,它的精度可能会丢失。

如何使用BigInt:BigInt(n(.toString((;

const num = BigInt(2.0210702881736412e+37);
// 20210702881736411847466551731631947776n
const strNum = num.toString();
// 20210702881736411847466551731631947776

编辑,附加信息

Bigint库(或内置数据类型(只能处理整数。我认为尝试JavaScript数字运算库似乎是计算小数点的最快方法。大数库通常适用于任意精度的浮点数。有几个推荐的库。bignumber.js或bignumber

最新更新