
字符串轉(zhuǎn)換為數(shù)字的方法
字符串轉(zhuǎn)換為數(shù)字的方法可以分為兩種,一個(gè)是顯式轉(zhuǎn)換,一種是隱式轉(zhuǎn)換。
顯式轉(zhuǎn)換是通過(guò)函數(shù)的形式,將字符串轉(zhuǎn)換成數(shù)組的形式;
隱式轉(zhuǎn)換則是通過(guò)運(yùn)算符的方式將字符串轉(zhuǎn)換成數(shù)字的形式。
顯式轉(zhuǎn)換
在顯式轉(zhuǎn)換中,有三個(gè)函數(shù)可以把字符串轉(zhuǎn)換為數(shù)值:Number()、parseInt()、parseFloat()。
Number()可以用于任何數(shù)據(jù)類型,而另外兩個(gè)函數(shù)則專門用于把字符串轉(zhuǎn)換成數(shù)值。
Number()轉(zhuǎn)換規(guī)則如下:
如果字符串為數(shù)值字符串,則將其轉(zhuǎn)換為十進(jìn)制數(shù)值。
如果字符串中包含有效的十六進(jìn)制格式,例如"0xf",則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值。
如果字符串為空字符串或空格字符串,則將其轉(zhuǎn)換為0。
如果字符串中含有除上述格式以外的字符,則將其轉(zhuǎn)換成NaN。
例如:
console.log(Number("?"));?//?0
console.log(Number("123"));?//?123
console.log(Number("HTML5學(xué)堂"));?//?NaN
console.log(Number("0xf"));?//?15
parseInt()函數(shù)在轉(zhuǎn)換字符串時(shí),更多的是看其是否符合數(shù)值模式。它會(huì)忽略字符串前面的空格,直至找到第一個(gè)非空格字符。如果第一個(gè)字符不是數(shù)字字符或者負(fù)號(hào),parseInt()就會(huì)返回NaN,如果是空字符串,則會(huì)返回NaN。如果第一個(gè)字符是數(shù)字字符,parseInt()會(huì)繼續(xù)解析第二個(gè)字符,直到解析完所有后續(xù)字符或者遇到非數(shù)字字符。例如"1234h5course"會(huì)被轉(zhuǎn)換成1234,"h5course"會(huì)被完全忽略。類似的,"123.4"會(huì)被轉(zhuǎn)換成123,因?yàn)樾?shù)點(diǎn)并不是有效的數(shù)字字符。如果字符串中包含有效的十六進(jìn)制格式,例如"0xf",則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值。例如:
console.log(parseInt(""));?//?NaN
console.log(parseInt("123h5course"));?//?123
console.log(parseInt("????123"));?//?123
console.log(parseInt("123"));?//?123
console.log(parseInt("123.7"));?//?123
console.log(parseInt("0xf"));?//?15
parseFloat()與parseInt()函數(shù)相似,只不過(guò)parseInt()返回的是整數(shù),而parseFloat()可以返回小數(shù)。parseFloat()轉(zhuǎn)換的時(shí)候,也是從第一個(gè)字符開(kāi)始解析每個(gè)字符,直到解析到字符串末尾,或者解析到遇見(jiàn)一個(gè)無(wú)效的浮點(diǎn)數(shù)字字符為止,也就是說(shuō),字符串中的第一個(gè)小數(shù)點(diǎn)是有效的,而第二個(gè)小數(shù)點(diǎn)就是無(wú)效的。例如"12.34.56"將會(huì)被轉(zhuǎn)換為12.34。如果字符串包含的是一個(gè)可解析為整數(shù)的數(shù),parseFloat()回返回整數(shù)。例如:
console.log(parseFloat(""));?//?NaN
console.log(parseInt("123.4h5course"));?//?123.4
console.log(parseInt("????123"));?//?123
console.log(parseInt("123.45"));?//?123.45
console.log(parseInt("123.7"));?//?123.7
console.log(parseInt("123.75.67"));?//?123.75
console.log(parseInt("0xf"));?//?15
隱式轉(zhuǎn)換
隱式轉(zhuǎn)換的方式可以通過(guò)+、* 1、/ 1的運(yùn)算來(lái)轉(zhuǎn)換成數(shù)字。例如:
var?a?=?"123";
var?b?=?"456";
var?c?=?"789";
a?=?+a;
b?=?b?*?1;
c?=?c?/?1;
console.log(a);?//?123
console.log(b);?//?456
console.log(c);?//?789
其他類型變量轉(zhuǎn)換為字符串的方法
十進(jìn)制轉(zhuǎn)換成二進(jìn)制
例:var a = 302;
console.log(a.toString(2));
toString( )<括號(hào)里面的數(shù)字是幾就轉(zhuǎn)換成幾進(jìn)制>
我們想把其他類型變量轉(zhuǎn)換成字符串,這個(gè)時(shí)候,我們通常使用toString()方法。幾乎每一個(gè)值都有toString()方法。例如:
var?a?=?123;
var?bool?=?true;
console.log(a.toString());?//?"123"
console.log(bool.toString());?//?"true"
數(shù)值、布爾值、對(duì)象和字符串都有toString()方法,但null和undefined沒(méi)有這個(gè)方法。我們還可以使用轉(zhuǎn)型函數(shù)String(),這個(gè)函數(shù)能夠?qū)⑷魏晤愋偷闹缔D(zhuǎn)換成字符串。例如:
var?obj?=?null;
console.log(String(obj));?//?"null"
var?unde?=?undefined;
console.log(String(unde));?//?"undefined"
var?a?=?123;
console.log(String(a));?//?"123"
var?bool?=?true;
console.log(String(bool));?//?"true"