北京做網(wǎng)站費(fèi)用深圳全網(wǎng)營銷系統(tǒng)
編程筆記 html5&css&js 072 JavaScrip BigInt數(shù)據(jù)類型
- 一、BigInt 數(shù)據(jù)類型
- 二、BigInt 的創(chuàng)建和使用
- 三、BigInt 操作與方法
- 三、示例
- 小結(jié)
JavaScript BigInt 數(shù)據(jù)類型是一種內(nèi)置的數(shù)據(jù)類型,用于表示大于
Number.MAX_SAFE_INTEGER
(即2^53 - 1)的整數(shù)。由于JavaScript中的標(biāo)準(zhǔn)數(shù)字類型(Number)使用雙精度浮點(diǎn)格式存儲,它在表示非常大的整數(shù)時會受限于其精度,可能導(dǎo)致精度丟失或無法正確表示超過安全范圍的整數(shù)值。
一、BigInt 數(shù)據(jù)類型
JavaScript BigInt 數(shù)據(jù)類型是一種內(nèi)置的數(shù)據(jù)類型,用于表示大于 Number.MAX_SAFE_INTEGER
(即2^53 - 1)的整數(shù)。由于JavaScript中的標(biāo)準(zhǔn)數(shù)字類型(Number)使用雙精度浮點(diǎn)格式存儲,它在表示非常大的整數(shù)時會受限于其精度,可能導(dǎo)致精度丟失或無法正確表示超過安全范圍的整數(shù)值。
BigInt類型的引入解決了這個問題,允許程序員處理任意大小的整數(shù),包括那些對于常規(guī)Number類型來說過大的整數(shù)。
二、BigInt 的創(chuàng)建和使用
-
字面量表示法:
創(chuàng)建BigInt對象最直接的方式是通過在整數(shù)值后面添加后綴n
。let bigintValue = 9007199254740993n; // 這是一個BigInt值 console.log(bigintValue); // 輸出: 9007199254740993n
-
構(gòu)造函數(shù)表示法:
如果需要將字符串或其他類型轉(zhuǎn)換為BigInt,可以使用BigInt構(gòu)造函數(shù)。let alsoBigInt = BigInt("9007199254740993"); // 字符串轉(zhuǎn)BigInt console.log(alsoBigInt); // 輸出: 9007199254740993nlet fromNumber = BigInt(Number.MAX_SAFE_INTEGER + 1); // Number轉(zhuǎn)BigInt console.log(fromNumber); // 輸出: 9007199254740994n
三、BigInt 操作與方法
-
算術(shù)運(yùn)算:BigInt支持基本的算術(shù)運(yùn)算,如加法、減法、乘法、除法、取模等,但需要注意的是,BigInt與Number不能直接進(jìn)行混合運(yùn)算,必須先將Number轉(zhuǎn)換為BigInt。
let a = 123456789012345678901234567890n; let b = 987654321098765432109876543210n;let sum = a + b; console.log(sum); // 正確執(zhí)行,結(jié)果也是一個BigIntlet mixAdd = a + 1; // 錯誤,BigInt和Number不能直接相加 // 必須改為: let correctMixAdd = a + BigInt(1);
-
比較操作:BigInt同樣支持比較運(yùn)算符(<, >, <=, >=, ==, !=)來比較兩個BigInt或BigInt與Number(Number會被自動轉(zhuǎn)換為BigInt以便比較)。
-
位運(yùn)算:BigInt也支持位操作符,如按位與(&)、按位或(|)、按位異或(^)、左移(<<)、右移(>>)以及無符號右移>>>(ES2022中新增)。
-
庫函數(shù):
BigInt.asUintN(width, bigint)
:將BigInt包裝為指定寬度(以比特為單位)的無符號整數(shù)。BigInt.asIntN(width, bigint)
:將BigInt包裝為指定寬度(以比特為單位)的有符號整數(shù)。
三、示例
let uint64Value = BigInt.asUintN(64, BigInt("18446744073709551615")); // 最大64位無符號整數(shù)
console.log(uint64Value.toString()); // 輸出: "18446744073709551615"let int64Value = BigInt.asIntN(64, BigInt("-9223372036854775808")); // 最小64位有符號整數(shù)
console.log(int64Value.toString()); // 輸出: "-9223372036854775808"
小結(jié)
總之,BigInt數(shù)據(jù)類型增強(qiáng)了JavaScript處理大整數(shù)的能力,使得在開發(fā)中能夠更精確地進(jìn)行大量整數(shù)計算而無需擔(dān)心溢出問題。