JavaScript數(shù)據(jù)類(lèi)型轉(zhuǎn)換
顯示轉(zhuǎn)換
有三個(gè)函數(shù)可以把字符串轉(zhuǎn)換為數(shù)值:Number()均芽、parseInt()贬派、parseFloat()俐芯。Number()可以用于任何數(shù)據(jù)類(lèi)型篮绰,而另外兩個(gè)函數(shù)則專(zhuān)門(mén)用于把字符串轉(zhuǎn)換成數(shù)值肄渗。
1)Number()
如果字符串為數(shù)值字符串镇眷,則將其轉(zhuǎn)換為十進(jìn)制數(shù)值。
如果字符串中包含有效的十六進(jìn)制格式翎嫡,例如"0xf"欠动,則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值。
如果字符串為空字符串或空格字符串,則將其轉(zhuǎn)換為0具伍。
如果字符串中含有除上述格式以外的字符翅雏,則將其轉(zhuǎn)換成NaN。
2)parseInt():返回整數(shù)
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ù)字字符疟羹。
3)parseFloat():返回浮點(diǎn)數(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ú)效的捎谨。
4)toString():其它類(lèi)型—>字符串
十進(jìn)制轉(zhuǎn)換成二進(jìn)制
例:var a = 302;
console.log(a.toString(2));
toString( )<括號(hào)里面的數(shù)字是幾就轉(zhuǎn)換成幾進(jìn)制>
把其他類(lèi)型變量轉(zhuǎn)換成字符串,我們通常使用toString()方法民效。數(shù)值、布爾值涛救、對(duì)象和字符串都有toString()方法畏邢,但null和undefined沒(méi)有這個(gè)方法。我們還可以使用轉(zhuǎn)型函數(shù)String()检吆,這個(gè)函數(shù)能夠?qū)⑷魏晤?lèi)型的值轉(zhuǎn)換成字符串舒萎。當(dāng)toString可以通過(guò)輸入基數(shù)以二進(jìn)制、八進(jìn)制蹭沛、十六進(jìn)制臂寝,乃至其他有效的進(jìn)制格式表示字符串。
例如:console.log(a.toString()); // "123"
console.log(bool.toString()); // "true"
5)toFixed(n):保留n位小數(shù)(輸出類(lèi)型:string)
var pi = 0.45;? ?//0.95對(duì)toFixed有疑問(wèn)為0.9
alert(Math.round(pi));? //round四舍五入取整
alert(pi.toFixed(1));? ?// 四舍五入為指定小數(shù)位數(shù)的數(shù)字摊灭。
輸出類(lèi)型: string
解釋?zhuān)?/h3>
toFixed它是一個(gè)四舍六入五成雙的詭異的方法咆贬,"四舍六入五成雙"含義:對(duì)于位數(shù)很多的近似數(shù),當(dāng)有效位數(shù)確定后帚呼,其后面多余的數(shù)字應(yīng)該舍去掏缎,只保留有效數(shù)字最末一位皱蹦,這種修約(舍入)規(guī)則是“四舍六入五成雙”,也即“4舍6入5湊偶”這里“四”是指≤4 時(shí)舍去眷蜈,"六"是指≥6時(shí)進(jìn)上沪哺,"五"指的是根據(jù)5后面的數(shù)字來(lái)定,當(dāng)5后有數(shù)時(shí)酌儒,舍5入1辜妓;當(dāng)5后無(wú)有效數(shù)字時(shí),需要分兩種情況來(lái)講:①5前為奇數(shù)今豆,舍5不進(jìn);②5前為偶數(shù)柔袁,舍5入1呆躲。
兼容:
var a = "070";
alert(typeof parseInt(a));
alert(parseInt(a));
IE6-7-8:56(八進(jìn)制計(jì)算)
谷歌正常 70;
處理兼容:(a, 10),強(qiáng)制幾進(jìn)制輸出捶索!
隱式轉(zhuǎn)換
隱式轉(zhuǎn)換的方式可以通過(guò)+""插掂、* 1、/ 1的運(yùn)算來(lái)把數(shù)值轉(zhuǎn)換成字符串腥例。(可相互)
數(shù)字——字符串: 數(shù)字 +(連字符)<數(shù)字+字符串=字符串>
字符串——數(shù)字: + - * / %
"123"-0 ? ???"123"*0 ? ???"123"/0 ? ???+"123" ? ??"123"%比前面的數(shù)值字符串大的數(shù)字辅甥;
顯式轉(zhuǎn)換是通過(guò)函數(shù)的形式,將字符串轉(zhuǎn)換成數(shù)組的形式燎竖,隱式轉(zhuǎn)換則是通過(guò)運(yùn)算符的方式將字符串轉(zhuǎn)換成數(shù)字的形式璃弄。
總結(jié):
顯示轉(zhuǎn)換:
1)Number()
2)parseInt():返回整數(shù)
3)parseFloat():返回浮點(diǎn)數(shù)
4)toString():其它類(lèi)型—>字符串
5)toFixed(n):保留n位小數(shù)(輸出類(lèi)型:string)
隱式轉(zhuǎn)換:
數(shù)字轉(zhuǎn)換為字符串:+ ""
var str =? 數(shù)字 + "";
字符串轉(zhuǎn)數(shù)字:
var strs = ?+ - * / %“數(shù)字”构回;