試一試
console.log(parseInt("123"));
// 123 (default base-10)
console.log(parseInt("123", 10));
// 123 (explicitly specify base-10)
console.log(parseInt(" 123 "));
// 123 (whitespace is ignored)
console.log(parseInt("077"));
// 77 (leading zeros are ignored)
console.log(parseInt("1.9"));
// 1 (decimal part is truncated)
console.log(parseInt("ff", 16));
// 255 (lower-case hexadecimal)
console.log(parseInt("0xFF", 16));
// 255 (upper-case hexadecimal with "0x" prefix)
console.log(parseInt("xyz"));
// NaN (input can't be converted to an integer)
語法
parseInt(string)
parseInt(string, radix)
引數
返回值
從給定 string 解析出的整數,或者在以下情況下的NaN:
- 作為 32 位整數的
radix小於2或大於36,或者 - 第一個非空白字元無法轉換為數字。
注意:JavaScript 在語言層面沒有“浮點數”和“整數”的區別。parseInt() 和 parseFloat() 僅在解析行為上有所不同,但其返回值不一定不同。例如,parseInt("42") 和 parseFloat("42") 將返回相同的值:一個 Number 42。
描述
parseInt 函式將其第一個引數轉換為字串,解析該字串,然後返回一個整數或 NaN。
如果不是 NaN,返回值將是第一個引數以指定 radix 作為數字的整數。(例如,radix 為 10 從十進位制數轉換,8 從八進位制轉換,16 從十六進位制轉換,依此類推。)
radix 引數被轉換為數字。如果未提供,或者值變為 0、NaN 或 Infinity(undefined 被強制轉換為 NaN),JavaScript 假定以下情況:
- 如果輸入
string(移除開頭的空白字元和可能的+/-號後)以0x或0X開頭(一個零,後跟小寫或大寫 X),則radix假定為16,字串的其餘部分被解析為十六進位制數。 - 如果輸入
string以任何其他值開頭,則基數為10(十進位制)。
注意:其他字首,如在數字字面量中有效但 parseInt() 將它們視為普通數字的 0b。parseInt() 也不將以 0 字元開頭的字串視為八進位制值。parseInt() 唯一識別的字首是 0x 或 0X 表示十六進位制值——如果 radix 缺失,所有其他都解析為十進位制值。Number() 或 BigInt() 可以用來解析這些字首。
如果基數是 16,parseInt() 允許在可選的符號字元(+/-)之後,字串可選地以 0x 或 0X 為字首。
如果基數值(必要時進行強制轉換)不在 [2, 36](包含)範圍內,parseInt 將返回 NaN。
對於大於 10 的基數,英文字母表示大於 9 的數字。例如,對於十六進位制數(基數 16),使用 A 到 F。字母不區分大小寫。
parseInt 僅識別兩個符號:+ 表示正數,- 表示負數。它在解析的初始步驟中完成,在去除空白字元之後。如果沒有找到符號,演算法將進入下一步;否則,它會移除符號並在字串的其餘部分上執行數字解析。
如果 parseInt 在輸入字串中遇到一個在指定 radix 中不是有效數字的字元,它會忽略該字元及其所有後續字元,並返回解析到該點為止的整數值。例如,parseInt("2", 2) 返回 NaN,因為 2 在二進位制數字系統中不是有效數字。同樣,儘管 1e3 技術上編碼了一個整數(並且將被 parseFloat() 正確解析為整數 1000),但 parseInt("1e3", 10) 返回 1,因為 e 在基數 10 中不是有效數字。因為 . 也不是數字,所以返回值將始終是一個整數。
如果第一個字元不能使用正在使用的基數轉換為數字,parseInt 返回 NaN。允許開頭的空白字元。
出於算術目的,NaN 值在任何基數中都不是數字。您可以呼叫 Number.isNaN 函式來確定 parseInt 的結果是否為 NaN。如果 NaN 傳遞給算術運算,運算結果也將是 NaN。
由於大數在字串表示中使用 e 字元(例如,6.022 × 1023 用 6.022e23 表示),因此在非常大或非常小的數字上使用 parseInt 截斷數字將產生意外結果。parseInt 不應用作 Math.trunc() 的替代品。
要將數字轉換為特定基數中的字串字面量,請使用 thatNumber.toString(radix)。
由於 parseInt() 返回一個數字,如果字串表示的整數超出安全範圍,它可能會遭受精度損失。BigInt() 函式支援精確解析任意長度的整數,透過返回一個 BigInt。
示例
使用 parseInt()
以下所有示例都返回 15
parseInt("0xF", 16);
parseInt("F", 16);
parseInt("17", 8);
parseInt("015", 10);
parseInt("15,123", 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15 * 3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);
parseInt("12", 13);
以下所有示例都返回 NaN
parseInt("Hello", 8); // Not a number at all
parseInt("546", 2); // Digits other than 0 or 1 are invalid for binary radix
以下所有示例都返回 -15
parseInt("-F", 16);
parseInt("-0F", 16);
parseInt("-0XF", 16);
parseInt("-17", 8);
parseInt("-15", 10);
parseInt("-1111", 2);
parseInt("-15e1", 10);
parseInt("-12", 13);
以下示例返回 224
parseInt("0e0", 16);
parseInt() 不處理 BigInt 值。它會在 n 字元處停止,並將前面的字串視為普通整數,可能存在精度損失。
parseInt("900719925474099267n");
// 900719925474099300
您應該將字串(不帶尾隨的 n 字元)傳遞給 BigInt() 函式。
BigInt("900719925474099267");
// 900719925474099267n
parseInt 不適用於數字分隔符
parseInt("123_456"); // 123
對非字串使用 parseInt()
當與高基數(例如 36,這使得所有字母數字字元都成為有效的數字位)結合使用時,parseInt() 在處理非字串時可能會產生有趣的結果。
parseInt(null, 36); // 1112745: The string "null" is 1112745 in base 36
parseInt(undefined, 36); // 86464843759093: The string "undefined" is 86464843759093 in base 36
通常,對非字串使用 parseInt() 是一個壞主意,特別是將其用作 Math.trunc() 的替代品。它可能適用於小數
parseInt(15.99, 10); // 15
parseInt(-15.1, 10); // -15
然而,這僅是因為這些數字的字串表示使用基本分數記法("15.99", "-15.1"),其中 parseInt() 在小數點處停止。大於或等於 1e+21 或小於或等於 1e-7 的數字在其字串表示中使用科學記數法("1.5e+22", "1.51e-8"),而 parseInt() 將在 e 字元或小數點處停止,這總是出現在第一個數字之後。這意味著對於大數和小數,parseInt() 將返回一個一位整數
parseInt(4.7 * 1e22, 10); // Very large number becomes 4
parseInt(0.00000000000434, 10); // Very small number becomes 4
parseInt(0.0000001, 10); // 1
parseInt(0.000000123, 10); // 1
parseInt(1e-7, 10); // 1
parseInt(1000000000000000000000, 10); // 1
parseInt(123000000000000000000000, 10); // 1
parseInt(1e21, 10); // 1
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-parseint-string-radix |
瀏覽器相容性
載入中…