js字符串轉(zhuǎn)換成數(shù)字
js 字符串轉(zhuǎn)換數(shù)字方法主要有三種:轉(zhuǎn)換函數(shù)囚企、強(qiáng)制類型轉(zhuǎn)換窿锉、利用JS變量弱類型特點(diǎn)進(jìn)行轉(zhuǎn)換
1. 轉(zhuǎn)換函數(shù):js提供了parseInt()和parseFloat()兩個轉(zhuǎn)換函數(shù)信殊。前者把值轉(zhuǎn)換成整數(shù),后者把值轉(zhuǎn)換成浮點(diǎn)數(shù)。只有對String類型調(diào)用這些方法柔吼,這兩個函數(shù)才能正確運(yùn)行掰邢;對其他類型返回的都是NaN(Not a Number)牺陶。
將字符串轉(zhuǎn)換成數(shù)字,得用到parseInt函數(shù)辣之。
parseInt(string) : 函數(shù)從string的開始解析掰伸,返回一個整數(shù)。
舉例:
parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
如果解析不到數(shù)字怀估,則將返回一個NaN的值狮鸭,可以用isNaN()函數(shù)來檢測;
舉例 :
if (isNaN(i))
{
console.log('NaN value');
}
parseInt()方法還可以把二進(jìn)制多搀、八進(jìn)制歧蕉、十六進(jìn)制或其他任何進(jìn)制的字符串轉(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
如果十進(jìn)制數(shù)包含前導(dǎo)0,那么最好采用基數(shù)10从藤,這樣才不會意外地得到八進(jìn)制的值催跪。例如:
parseInt("010"); //returns 8
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10
同樣的parseFloat函數(shù)是將字符串轉(zhuǎn)換成浮點(diǎn)數(shù)。
舉例:parseFloat('31.24abc') : 返回 31.24夷野;另外懊蒸,parseFloat()沒有進(jìn)制的區(qū)分。
2. 強(qiáng)制類型轉(zhuǎn)換
還可使用強(qiáng)制類型轉(zhuǎn)換(type casting)處理轉(zhuǎn)換值的類型悯搔。使用強(qiáng)制類型轉(zhuǎn)換可以訪問特定的值榛鼎,即使它是另一種類型的。
ECMAScript中可用的3種強(qiáng)制類型轉(zhuǎn)換如下:
Boolean(value)——把給定的值轉(zhuǎn)換成Boolean型;
Number(value)——把給定的值轉(zhuǎn)換成數(shù)字(可以是整數(shù)或浮點(diǎn)數(shù))者娱;
String(value)——把給定的值轉(zhuǎn)換成字符串抡笼。
用這三個函數(shù)之一轉(zhuǎn)換值,將創(chuàng)建一個新值黄鳍,存放由原始值直接轉(zhuǎn)換成的值推姻。這會造成意想不到的后果。
當(dāng)要轉(zhuǎn)換的值是至少有一個字符的字符串框沟、非0數(shù)字或?qū)ο髸r藏古,Boolean()函數(shù)將返回true。如果該值是空字符串忍燥、數(shù)字0拧晕、undefined或null,它將返回false梅垄。
Number()的強(qiáng)制類型轉(zhuǎn)換與parseInt()和parseFloat()方法的處理方式相似厂捞,只是它轉(zhuǎn)換的是整個值,而不是部分值队丝。示例如下:
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
3. 利用js變量弱類型轉(zhuǎn)換
例:
<script>
var str= '012.345 ';
var x = str-0;
x = x*1;
</script>
上例利用了js的弱類型的特點(diǎn)靡馁,只進(jìn)行了算術(shù)運(yùn)算,實(shí)現(xiàn)了字符串到數(shù)字的類型轉(zhuǎn)換机久,不過這個方法還是不推薦的
js數(shù)字轉(zhuǎn)換成字符串
將字符串轉(zhuǎn)換成數(shù)字臭墨,得用到String類的toString方法
舉例:
var i = 10;
var s = i.toString();
alert(typeof s); //將輸出 String
js數(shù)字與字符串的區(qū)別
js的數(shù)字的加法與字符串的連接都是 + 符號, 所以究竟是加還是字符串的連接就取決與變量的類型膘盖。
舉例:
var a = 'abc' + 'xyz'; //a的值為:abcxyz,字符串與字符串是連接
var a = 10 + 5; //a的值為:15胧弛,數(shù)字是加
var a = 'abc' + 10; //a的值為:abc10,字符串與數(shù)字侠畔,自動將10轉(zhuǎn)換成字符串了
var a = 'abc' + 10 + 20 + 'cd'; //a的值為:abc1020cd
var a = 10 + 20 + 'abc' + 'cd'; //a的值為:30abccd结缚,可以數(shù)字加的先數(shù)字加,然后再連接