js精度丟失 es11新出BigInt 的可以解決 BigInt 可以表示任意精度格式的整數
阿新 • • 發佈:2020-11-25
//Number型別在超過9009199254740991後,計算結果即出現問題 const num1 = 90091992547409910; console.log(num1 + 1); //90091992547409900 //BigInt 計算結果爭取 const num2 = 90091992547409910n; console.log(num2 + 1n); //90091992547409911n //Number 型別不能表示大於 2 的 1024 次方的數值 let num3 = 9999; for(let i = 0; i < 10; i++) { num3 = num3 * num3; } console.log(num3); //Infinity //BigInt 型別可以表示任意位數的整數 let num4 = 9999n; for(let i = 0n; i < 10n; i++) { num4 = num4 * num4; } console.log(num4); //一串超級長的數字,這裡就不貼了 我們還可以使用 BigInt 物件來初始化 BigInt 例項: console.log(BigInt(999)); // 999n 注意:沒有 new 關鍵字!!! 需要說明的是,BigInt 和 Number 是兩種資料型別,不能直接進行四則運算,不過可以進行比較操作。 console.log(99n == 99); //true console.log(99n === 99); //false console.log(99n + 1);//TypeError: Cannot mix BigInt and other types, use explicit conversionss