JavaScript中,可以透過以下3種方法將string值轉換成number:
1.呼叫Number()來對string進行值型別轉換。
2.parseInt()。
3.parseFloat()。
Number()
使用Number()函數來對string進行強制型別轉換是最直接的做法。不過,這種做法有一個限制:如果字串截去開頭和結尾的空白字元後,不是純數字字串,那麼最終回傳結果為NaN。 David Flanagan的JavaScript – The Definitive Guide 6th edition, 3.8.2節提到,用Number()函數來進行string-to-number轉換時,函數只接受10進位字串,但測試結果顯示事實並非如此, Number()函數可以接受”0xff”作為參數並將其轉換成數值255。
console.log(Number(a));//42
console.log(Number(b));//NaN
console.log(Number(c));//255
console.log(Number(d));//42.34
parseInt()
parseInt()函數可以將字串轉換成一個整數,與Number()函數相比,parseInt()函數不僅可以解析純數字字串,也可以解析以數字開頭的部分數字字串(非數字部分字串在轉換過程中會被去除)。值得注意的是,當parseInt()函數所解析的是浮點數字串時,取整操作所使用的方法為「向下取整」(truncate)。
除了字串作為第一個參數,parseInt()函數還可以接受2到36之間的任意整數作為第二個參數,用於指定轉換過程中的進制數。
console.log(parseInt(b));//42
console.log(parseInt(x));//-12
console.log(parseInt(y));//15
console.log(parseInt(c));//255
console.log(parseInt(z, 2));//42
console.log(parseInt(".1"));//NaN
parseFloat()
與parseInt()一樣,parseFloat()也可以解析以數字開頭的部分數字字串(非數字部分字串在轉換過程中會被移除)。與parseInt()不同的是,parseFloat()可以將字串轉換成浮點數;但同時,parseFloat()只接受一個參數,且僅能處理10進位字串。
console.log(parseFloat(c));//0, because "0xff" start with 0
console.log(parseFloat(d));//42.34
console.log(parseFloat(".1"));//0.1