首页 前端知识 JavaScript BigInt

JavaScript BigInt

2024-08-23 20:08:28 前端知识 前端哥 944 701 我要收藏

JavaScript BigInt 变量用于存储太大而无法用普通 JavaScript 数字表示的大整数值。

在 JavaScript 中,所有数字都以 64 位浮点格式存储。大整数无法被精确表示,会被四舍五入

  • 最大为 9007199254740991(253-1)
  • 最小为 -9007199254740991(-(253-1))

超出此范围的整数值会失去精度。

如何创建 BigInt

如需创建 BigInt,可以在整数末尾添加 n,或调用 BigInt() 函数:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<p id="demo1"></p>
<script>
let x = 9999999999999999;
let y = BigInt("9999999999999999");
document.getElementById("demo").innerHTML = x + "<br>" + y;

let x1 = 1234567890123456789012345n;
let y1 = BigInt(1234567890123456789012345)
document.getElementById("demo1").innerHTML = x1 + "<br>" + y1;
</script>

</body>
</html>

BigInt:一种新的 JavaScript 数据类型

BigInt 的 JavaScript 类型是 "bigint":

let x = BigInt("9999999999999999");
document.getElementById("demo").innerHTML = typeof x;    //返回  bigint

BigInt 是 JavaScript 中的第二个数值数据类型(在 Number 之后)。

对于 BigInt,JavaScript 支持的数据类型总数为 8 种:

  1. String
  2. Number
  3. Bigint
  4. Boolean
  5. Undefined
  6. Null
  7. Symbol
  8. Object

BigInt 运算符

可用于 JavaScript Number 的运算符也可用于 BigInt。

BigInt 乘法实例

let x = 9007199254740995n;
let y = 9007199254740995n;
let z = x * y;     //返回81129638414606735738984533590025

不允许在 BigInt 和 Number 之间进行算术运算(类型转换会丢失信息)。

BigInt 无法进行无符号右移操作(>>>),因为它没有固定的宽度。

<script>
    let x = 5n;
    let y = Number(x) / 2;
    
    document.getElementById("demo").innerHTML = y; 
    </script>

BigInt 十六进制、八进制和二进制

BigInt 也可以写成十六进制、八进制或二进制表示法:

BigInt 十六进制实例

<script>
    let hex = 0x20000000000003n;
    let oct = 0o400000000000000003n;
    let bin = 0b100000000000000000000000000000000000000000000000000011n;
    
    document.getElementById("demo").innerHTML = hex + "<br>" + oct + "<br>" + bin; 
    </script>

 //十六进制、八进制和二进制
 //9007199254740995
 //9007199254740995
 //9007199254740995

ES6 向 Number 对象添加了 max 和 min 属性:

  • MAX_SAFE_INTEGER let x = Number.MAX_SAFE_INTEGER; (返回9007199254740991)
  • MIN_SAFE_INTEGER let x = Number.MIN_SAFE_INTEGER; (返回-9007199254740991)

新的数字方法

ES6 还为 Number 对象添加了两个新方法:

  • Number.isInteger()
  • Number.isSafeInteger()

Number.isInteger() 方法

如果参数是整数,则 Number.isInteger() 方法返回 true,否则返回 false。

isInteger() 实例

Number.isInteger(10);
Number.isInteger(10.5);

Number.isSafeInteger() 方法

安全整数是可以精确表示为双精度数的整数。

如果参数是安全整数,则 Number.isSafeInteger() 方法返回 true

isSafeInteger() 实例

Number.isSafeInteger(10);      //true
Number.isSafeInteger(12345678901234567890);   //true

注意:

安全整数是从 -(253 - 1) 到 +(253 - 1) 的所有整数。

这是一个安全整数:9007199254740991。这不是一个安全整数:9007199254740992。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/16654.html
标签
评论
发布的文章

安装Nodejs后,npm无法使用

2024-11-30 11:11:38

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!