在过去的 JavaScript 中,整数运算是以 64 位双精度浮点数 (即 IEEE 754 双精度)进行的,这意味着整数的精确度只能是 -2^53 到 2^53 之间。大于这个范围的整数就不能精确表示,因此,在需要处理超过这个范围的整数时,JavaScript 开发人员被迫使用第三方库或其他语言的帮助。但是,随着 ECMAScript 2020(ES12)的发布,JavaScript 现在有了一个新的内置类型 BigInt,使开发人员可以更轻松地处理大整数。
本文将向您介绍 BigInt 类型,如何定义和使用 BigInt 变量,以及 BigInt 类型提供的方法,以及使用 BigInt 完成数值运算的示例代码。
BigInt 类型简介
BigInt 是一种新的 JavaScript 内置类型,它表示任意精度的整数。BigInt 是在 ES12 中引入的,可以存储比现有 JavaScript Number 类型允许更大的整数,最小为 -2^53 + 1,最大为 2^53 - 1。 相比之前的整数类型而言,BigInt 可以表示更大、更精确的整数值。
BigInt 类型的定义和使用
- BigInt 构造函数
使用 BigInt 构造函数可以创建 BigInt 类型的变量。可以使用带有 "n" 后缀的字符串表示法或使用 BigInt 构造函数来定义 BigInt。如下示例:
const bigNum1 = 9876543210n; const bigNum2 = BigInt("12345678901234567890123456789");
- BigInt 与现有的整数类型之间的区别
在 BigInt 变量定义时,必须将数字后缀 "n" 添加到整数的末尾,BigInt 与现有的整数类型被认为是不同的。如以下示例表示两者之间的区别:
const jsMaxValue = Number.MAX_SAFE_INTEGER; console.log(jsMaxValue); // 9007199254740991 const bigNum = BigInt(jsMaxValue); console.log(bigNum); // 9007199254740991n
在上面的示例中,jsMaxValue 仅定义为数字,而 bigNum 变量需要添加 "n" 后缀,以表示它是 BigInt 类型。
- BigInt 类型方法
BigInt 对象的方法可用于执行更大范围内的运算。BigInt 还提供以下常见方法:
方法名称 | 描述 |
---|---|
BigInt.prototype.toString() | 把 BigInt 对象转换为字符串。 |
BigInt.prototype.valueOf() | 返回 BigInt 对象或 BigInt 字面量的原始值。 |
BigInt.prototype.toLocaleString() | 把 BigInt 对象转换为本地字符串。 |
下面是使用 BigInt 对象的示例代码:
const bigNum1 = 9876543210n; const bigNum2 = BigInt("12345678901234567890123456789"); console.log(bigNum1.toString()); // "9876543210" console.log(bigNum1.toLocaleString()); // "9,876,543,210" console.log(bigNum2.valueOf()); // "12345678901234567890123456789n"
使用 BigInt 完成数值运算
BigInt 还支持本机整数运算符(例如 +,-,*和/),这些运算符可用于在 ES12 中完成数学运算。可以像计算常规数字一样使用这些运算符,BigInt 类型会根据特定的运算符进行转换。下面是一些示例代码,演示 BigInt 变量的加法,减法,乘法和除法:
// javascriptcn.com code example const bigNum1 = 9876543210n; const bigNum2 = BigInt("12345678901234567890123456789"); // BigInt 变量加法 const bigNumAdd = bigNum1 + bigNum2; console.log('BigInt Add:', bigNumAdd); // "12345678901244444444444444499n" // BigInt 变量减法 const bigNumSubtract = bigNum2 - bigNum1; console.log('BigInt Subtract:', bigNumSubtract); // "12345678901224791354791384679n" // BigInt 变量乘法 const bigNumMultiply = bigNum1 * bigNum2; console.log('BigInt Multiply:', bigNumMultiply); // "121932631143058073528183689175158729610n" // BigInt 变量除法 const bigNumDivide = bigNum2 / bigNum1; console.log('BigInt Divide:', bigNumDivide); // "1250000000n" // 与常规数字一起使用运算符 const bigNum = 100n; const normalNum = 10; console.log('Normal number Addition:', bigNum + normalNum); // "110n"
结论
BigInt 类型是 ES12 中非常有价值的新功能。它使开发人员可以更轻松地处理大整数值,以便更好地应对业务需求。在本文中,我们已经学习了 BigInt 变量的定义与使用,以及 BigInt 提供的常见方法和运算符。它给我们的工作带来了新的、更强大的可能性,并将为我们以后的工作提供有力的支持。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6738e16c317fbffedf13b867