使用 parseFloat()、parseInt()、Number() 轉換型別

parseFloat()

parseFloat(string)

parseFloat() 函數可解析一個字串,並返回一個浮點數。
該函數指定字串中的首個字符是否是數字。如果是,則對字符串進行解析,直到到達數字的末端為止,然後以數字返回該數字,而不是字串。

參數 描述
string 必需。要被解析的字符串。

特性

  • 只有字串中的第一個數字會被返回。
  • 開頭和結尾的空格是允許的。
  • 如果字串的第一個字符不能被轉換為數字,那麼 parseFloat()會返回 NaN

例子

1
2
3
4
5
6
7
8
parseFloat("10")           // 10
parseFloat("10.33") // 10.33
parseFloat("34 45 66") // 34
parseFloat(" 60 ") // 60
parseFloat("40 years") // 40
parseFloat("He was 40") // NaN
parseFloat('010') // 10
parseFloat(010) // 8 開頭為 0 的 Number 型別會被當作八進制帶入

parseInt()

parseInt(string, radix)

string
parseInt() 函數可解析一個字串,並返回一個整數。

radix
當參數 radix 的值為 0,或沒有設置時,parseInt() 會根據 string 來判斷 radix 的基數。

  • 如果string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析為十進制的整數。
  • 如果string 以 “0x” 開頭,parseInt() 會把 string 的其餘部分解析為十六進制的整數。
  • 如果string 以 0 開頭,那麼 ECMAScript v3 允許parseInt() 的一個實現把其後的字符解析為八進製或十六進制的數字。
參數 描述
string 必需。要被解析的字符串。
radix 可選。表示要解析的數字的基數。該值介於 2 ~ 36 之間。

特性

  • 只有字串中的第一個數字會被返回。
  • 開頭和結尾的空格是允許的。
  • 如果字串的第一個字符不能被轉換為數字,那麼 parseInt()會返回 NaN
  • 在字符串以 “0” 為開始時舊的瀏覽器默認使用八進制。ECMAScript 5,默認為十進制。

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
parseInt("10")           // 10
parseInt("10.33") // 10
parseInt("34 45 66") // 34
parseInt(" 60 ") // 60
parseInt("40 years") // 40
parseInt("He was 40") // NaN
parseInt('010') // 10
parseInt(010) // 8 開頭為 0 的 Number 型別會被當作八進制帶入 (參考補充)

parseInt("10",10) // 10
parseInt("010") // 10
parseInt("10",8) // 8
parseInt("0x10") // 16
parseInt("10",16) // 16

補充

留意 parseInt 用法

Number()

Number(object)

Number() 函數把對象的值轉換為數字,如果對象的值無法轉換為數字,那麼 Number() 函數返回 NaN

參數 描述
object 可選。一個 JavaScript 對象。如果沒有提供參數,則返回 0。

特性

  • 如果參數是 Date 對象,Number() 返回從 1970 年 1 月 1 日至今的毫秒數 (TimeStamp)。
1
2
const date = new Date();
Number(date); //1561453521912

例子

1
2
3
4
5
6
7
8
Number(true);         // 1
Number(false); // 0
Number("999"); // 999
Number("010"); // 10
Number(010); // 8 開頭為 0 的 Number 型別會被當作八進制帶入
Number("999 888"); // NaN
Number("lucky777"); // NaN
Number("777lucky") // NaN

補充

若遇到上例有空格字符的情況,可以使用正規式將空格過濾後再帶入函式,參考初探正規式

1
Number("999 888".replace(/\s/g, ``)); // 999888