JS 中將 number 轉換爲 string 我們比較熟悉,直接用toString() 的方法就可以了;那麼將 string 轉換成爲 number 都有些什麼方法呢?如下便簡單的列舉了一些,以便記錄,說不定什麼時候就用到了~~
我們可以使用parseInt ,或者unary plus 或者parseFloat with floor 或者Math.round這些方式,請看如下具體的代碼:
js提供了parseInt()和parseFloat()兩個轉換函數。前者把值轉換成整數,後者把值轉換成浮點數。只有對String類型調用這些方法,這兩個函數才能正確運行;對其他類型返回的都是NaN(Not a Number)。
一些示例如下:
parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
1):parseInt
var x = parseInt("10"); // 10
但是這種只帶一個參數的方式會存在詬病。比如我們想將字符串 "010" 轉化爲數字 10,直接用這個方法將會返回8.
var x = parseInt("010"); // 8
因此這裏提供另外一個方法,帶有兩個參數:第一個是目標轉換字符串,第二個用來指定將字符串轉化爲幾進制的數字,並且radix的範圍是(2~36)
parseInt(string, radix)
例如:
var x = parseInt("1000", 10); // 1000
2):unary plus (一元操作符"+"),這種方式非常的巧妙
var x = +"1000"; // 1000
var x = +"1000.12"; // 1000.12
3):parseFloat 方法可以將對應的字符串轉化爲浮點類型的數字
var x = parseFloat("1000.01") // 1000.01
使用parseFloat()方法的另一不同之處在於,字符串必須以十進制形式表示浮點數,parseFloat()沒有基模式。
下面是使用parseFloat()方法的示例: parseFloat("1234blue"); //returns 1234.0 parseFloat("0xA"); //returns NaN parseFloat("22.5"); //returns 22.5 parseFloat("22.34.5"); //returns 22.34 parseFloat("0908"); //returns 908 parseFloat("blue"); //returns NaN
4):Math.floor 的方式可以對字符和數字進行向下取整
var x = Math.floor("1000.01"); // 1000
var x = Math.floor(1000.01); // 1000
var x = Math.floor(1000.91); // 1000
5):Math.round 的方式可以對字符和數字進行四捨五入取整
var x = Math.round("1000"); //1000 equivalent to round("1000",0)
var x = Math.round("1000.56"); // 1001
var x = Math.round("1000.23"); // 1000
6). 強制類型轉換
Boolean(""); //false – empty string
Boolean("hi"); //true – non-empty string
Boolean(100); //true – non-zero number
Boolean(null); //false - null
Boolean(0); //false - zero
Boolean(new Object()); //true – object
Number()的強制類型轉換與parseInt()和parseFloat()方法的處理方式相似,只是它轉換的是整個值,而不是部分值。
示例如下:用法結果
Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number( "5.5 ") 5.5
Number( "56 ") 56
Number( "5.6.7 ") NaN
Number(new Object()) NaN
Number(100) 100
最後一種強制類型轉換方法String()是最簡單的,示例如下:
var s1 = String(null); //"null"
var oNull = null;
var s2 = oNull.toString(); //won’t work, causes an error