在 ES10 中,新增了一种基本数据类型 BigInt,它可以表示任意精度的整数,解决了 JavaScript 中 Number 类型的精度问题。BigInt 类型可以表示的整数范围是 -2^53 + 1 到 2^53 - 1 之间的整数,超出这个范围的整数可以用 BigInt() 构造函数进行创建。
如何创建 BigInt
创建 BigInt 可以使用 BigInt() 构造函数,也可以在整数的末尾添加 n 或 N 来表示 BigInt 类型。
const bigNum1 = BigInt(Number.MAX_SAFE_INTEGER); // 使用构造函数创建 const bigNum2 = 9007199254740991n; // 直接创建
BigInt 的运算
BigInt 类型支持基本的数值运算,包括加、减、乘、除以及取模。需要注意的是,BigInt 类型和 Number 类型之间不能进行运算,需要先将 Number 类型转换为 BigInt 类型。
-- -------------------- ---- ------- ----- ------- - ------------------------------------------ ----- ------- - ------------------------------------------ ----- ------- - ------- - -------- --------------------- -- ------------------------------------------ ----- ------- - ------- - -------- --------------------- -- ------------------------------------------ ----- ------- - ------- - -------- --------------------- -- ------------------------------------------------------------------------------ ----- ------- - ------- - -------- --------------------- -- -- ----- ------- - ------- - -------- --------------------- -- ----------------------------------------- - -----------------------------------------
BigInt 的比较
BigInt 类型支持比较运算符,包括 <、>、<=、>=、==、!=。需要注意的是,BigInt 类型和 Number 类型之间不能进行比较,需要先将 Number 类型转换为 BigInt 类型。
-- -------------------- ---- ------- ----- ------- - ------------------------------------------ ----- ------- - ------------------------------------------ ------------------- - --------- -- ---- ------------------- - --------- -- ----- ------------------- -- --------- -- ---- ------------------- -- --------- -- ----- ------------------- -- --------- -- ----- ------------------- -- --------- -- ----
BigInt 的转换
将 BigInt 类型转换为 Number 类型可以使用 Number() 函数,但是需要注意的是,如果 BigInt 类型的整数超出了 Number 类型的范围,转换后会丢失精度。
const bigNum = 1234567890123456789012345678901234567890n; const num = Number(bigNum); console.log(num); // 1.2345678901234568e+39
将 Number 类型转换为 BigInt 类型可以使用 BigInt() 构造函数。
const num = 1234567890123456789012345678901234567890; const bigNum = BigInt(num); console.log(bigNum); // 1234567890123456789012345678901234567890n
总结
BigInt 类型是 ES10 中新增的一种基本数据类型,它可以表示任意精度的整数,解决了 JavaScript 中 Number 类型的精度问题。在使用 BigInt 类型时,需要注意不能和 Number 类型进行运算和比较,需要先进行类型转换。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6603c924d10417a222043c9f