這里記錄js 字符串轉(zhuǎn)換數(shù)字的三種主要方法: 轉(zhuǎn)換函數(shù)叹侄、強制類型轉(zhuǎn)換、利用js變量弱類型轉(zhuǎn)換世澜。
1. 轉(zhuǎn)換函數(shù):
js提供了parseInt()和parseFloat()兩個轉(zhuǎn)換函數(shù)逗威。前者把值轉(zhuǎn)換成整數(shù)惨缆,后者把值轉(zhuǎn)換成浮點數(shù)。只有對String類型調(diào)用這些方法剂桥,這兩個函數(shù)才能正確運行忠烛;對其他類型返回的都是NaN(Not a Number)。
- 示例:
parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
parseInt()方法還有基模式权逗,可以把二進制美尸、八進制、十六進制或其他任何進制的字符串轉(zhuǎn)換成整數(shù)斟薇∈玻基是由parseInt()方法的第二個參數(shù)指定的.
- 示例:
parseInt("AF", 16); //returns 175
parseInt("10", 2); //returns 2
parseInt("10", 8); //returns 8
parseInt("10", 10); //returns 10
如果十進制數(shù)包含前導(dǎo)0,那么最好采用基數(shù)10堪滨,這樣才不會意外地得到八進制的值胯陋。例如:
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10
parseFloat()方法與parseInt()方法的處理方式相似。 使用parseFloat()方法的另一不同之處在于袱箱,字符串必須以十進制形式表示浮點數(shù)遏乔,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
2. 強制類型轉(zhuǎn)換
使用強制類型轉(zhuǎn)換(type casting)處理轉(zhuǎn)換值的類型发笔。使用強制類型轉(zhuǎn)換可以訪問特定的值按灶,即使它是另一種類型的。 ECMAScript中可用的3種強制類型轉(zhuǎn)換如下:
- Boolean(value)——把給定的值轉(zhuǎn)換成Boolean型筐咧;
- Number(value)——把給定的值轉(zhuǎn)換成數(shù)字(可以是整數(shù)或浮點數(shù));
- String(value)——把給定的值轉(zhuǎn)換成字符串。
用這三個函數(shù)之一轉(zhuǎn)換值量蕊,將創(chuàng)建一個新值铺罢,存放由原始值直接轉(zhuǎn)換成的值。這會造成意想不到的后果残炮。 當(dāng)要轉(zhuǎn)換的值是至少有一個字符的字符串韭赘、非0數(shù)字或?qū)ο螅ㄏ乱还?jié)將討論這一點)時,Boolean()函數(shù)將返回true势就。如果該值是空字符串泉瞻、數(shù)字0、undefined或null苞冯,它將返回false袖牙。
測試Boolean型的強制類型轉(zhuǎn)換:
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()的強制類型轉(zhuǎn)換與parseInt()和parseFloat()方法的處理方式相似,只是它轉(zhuǎn)換的是整個值舅锄,而不是部分值鞭达。
示例:
用 法 結(jié) 果
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
最后一種強制類型轉(zhuǎn)換方法String()是最簡單的.
示例:
var s1 = String(null); //"null"
var oNull = null;
var s2 = oNull.toString(); //won’t work, causes an error
3. 利用js變量弱類型轉(zhuǎn)換
一個小例子:
var str= ‘012.345 ‘;
var x = str-0;
x = x*1;
上例利用了js的弱類型的特點,只進行了算術(shù)運算皇忿,實現(xiàn)了字符串到數(shù)字的類型轉(zhuǎn)換畴蹭,不過這個方法還是不推薦的.