在 JavaScript 中,Number 类型只能安全地表示 -(2^53 - 1) 到 2^53 - 1 之间的整数。超过这个范围的数字,JavaScript 就无法精确表示,可能会出现精度丢失的问题。
为了处理超过 Number 类型最大值的数字,你可以采取以下几种方法:
-
使用 BigInt 类型:
- BigInt 是 JavaScript 中的一个原始类型,可以表示任意大的整数,不会丢失精度。
- 你可以使用 BigInt 字面量(例如,
123n
)或BigInt()
构造函数来创建 BigInt。
-
使用字符串表示:
- 对于一些不需要进行算术运算的场景,你可以使用字符串来存储超过 Number 最大值的数字。
-
使用第三方库:
- 一些第三方库,例如
big.js或者decimal.js
提供了更完善的大数处理功能。
- 一些第三方库,例如
以下是一些代码示例:
// 使用 BigInt
const bigNum = BigInt('12345678987547674674653657')
bigNum + bigNum //24691357975095349349307314n
// 使用字符串
const largeNumberStr = "123456789012345678901234567890";
console.log(largeNumberStr); // "123456789012345678901234567890"