防止JavaScript 中大整數的科學記數法
在JavaScript 中處理大整數可能很棘手,因為該語言傾向於將它們轉換為在字串上下文中使用超過21 位數字時的科學記數法。這可能會產生問題,尤其是在將整數作為 URL 的一部分列印時。幸運的是,有一些方法可以防止這種轉換並保持完整的數值。
原生 JavaScript 方法
JavaScript 的 Number.toFixed 方法可用來將數字格式化為指定的小數精確度。但它有一個限制:對於大於或等於 1e21 的數字,它會切換為科學記數法,最大精度為 20。
自訂實作
了解更多彈性,您可以建立自己的函數,例如所示的「toFixed」函數下方:
function toFixed(x) { // Handle small values if (Math.abs(x) < 1.0) { var e = parseInt(x.toString().split('e-')[1]); if (e) { x *= Math.pow(10,e-1); x = '0.' + (new Array(e)).join('0') + x.toString().substring(2); } } // Handle large values else { var e = parseInt(x.toString().split('+')[1]); if (e > 20) { e -= 20; x /= Math.pow(10,e); x += (new Array(e+1)).join('0'); } } return x; }
超越JavaScript
對於涉及大整數的複雜場景,請考慮使用 BigInt 函式庫,例如 BigNumber、Leemon 的 BigInt 或 BigInteger。最新的 JavaScript 版本也引進了原生 BigInt 支援。要使用它,只需使用 BigInt(n) 將整數轉換為 BigInt 對象,然後呼叫 toString()。
以上是如何防止 JavaScript 將大整數轉換為科學記數法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!