2023年1月9日 星期一

關於 BigInt

 關於 BigInt

前言

  最近發現 BigInt 這個型別,抽個空做個學習,在此做個紀錄。


內容

  BigInt 是 JavaScript 用來支援位數很多的整數的方案,它比 Number 還要能處理更多的整數,但不能處理小數,範例如下

console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
//
let num = 1234567890123456789 * 123;
let bigNum = 1234567890123456789n * 123n;
console.log(  num );//151851850485185200000
console.log(  Number.isFinite(num) );
console.log(  bigNum.toString() );//"151851850485185185047"


範例開頭先印出了 Number 的最大整數與負最大整數,接著用 Number 與 BigInt 來示範超出 Number 最大後會發生什麼事,如果要將一串數字轉成  BigInt 的話只要在數字的最後加上"n"就會變成 BigInt , Number 雖然可以正常印出數值,但其實數值是錯的!利用 Number.isFinite() 來檢查發現不會變成"false",所以 JavaScript 並不會在超出最大述職時直接變成無限大,最後 BigInt 並不能直接做列印,要透過 BigInt.toString() 才能列印數值,這點要注意。


參考資料

[ developer.mozilla.org ] BigInt


相關文章與資料

關於 Number.isFinite()

沒有留言:

張貼留言