Javascript "toLocaleString()" 函数在数字非常大时将小数点归零

Javascript "toLocaleString()" function chnages decimals to zero when number is very large

我正在开发一个 React 应用程序,我需要使用 toLocaleString 函数格式化一些数字,我意识到当数字非常大时,数字的小数部分会变为零

(10000.25).toLocaleString('en',{maximumFractionDigits: 2, minimumFractionDigits: 2});
//Output: 10,000.25

(10000000000000000000.25).toLocaleString('en',{maximumFractionDigits: 2, minimumFractionDigits: 2});
//Output: 10,000,000,000,000,000,000.00

为什么会这样?是错误还是我遗漏了什么?

Javascript 编译器无法处理非常大的数字。使用 Number.MAX_SAFE_INTEGER 检查它可以处理的最后一个数字。如果不计算这些数字,请尝试从一开始就考虑使用字符串类型(也许如果您从 API 类型中获取它),或者尝试使用 BigInt 类型。

对于浮点数,它可以处理的精度为 1 位小数的最大数字是 562949953421311,其他数字则不同。在您的案例中,这已被引用 here. Try using the BigNumber class。