課程
/前端開發
/JavaScript
/JavaScript進階篇
parseFloat()與parseInt()的區別?
2016-05-11
源自:JavaScript進階篇 6-11
正在回答
parseInt()方法首先查看位置0處的 字符,判斷它是否是個有效數字;如果不是,該方法將返回NaN,不再繼續執行其他操作。但如果該字符是有效數字,該方法將查看位置1處的字符,進行同樣的 測試。這一過程將持續到發現非有效數字的字符為止,此時parseInt()將把該字符之前的字符串轉換成數字。例如如果要把字符串 "1234blue "轉換成整數,那么parseInt()將返回1234,因為當它檢測到字符b時,就會停止檢測過程。parseInt()方法還有基模式,可以把二進制、八進制、十六進制或其他任何進制的字符串轉換成整數。基是由parseInt()方法的第二個參數指定的,所以要解析十六進制的值,當然,對二進制、八進制,甚至十進制(默認模式),都可以這樣調用parseInt()方法。如果十進制數包含前導0,那么最好采用基數10,這樣才不會意外地得到八進制的值。二、parseFloat()與parseInt()方法的處理方式相似,從位置0開始查看每個字符,直到找到第一個非有效的字符為止,然后把該字符之前的字符串轉換成數字。不過,對于這個方法來說,第一個出現的小數點是有效字符。如果有兩個小數點,第二個小數點將被看作無效的, parseFloat()方法會把這個小數點之前的字符串轉換成數字。這意味著字符串 "22.34.5"將被解析成22.34。使用parseFloat()方法的另一不同之處在于,字符串必須以十進制形式表示浮點數,而不能用八進制形式或十六進制形式。該方法會忽略前導0,所以八進制數0908將被解析為908。對于十六進制數0xA,該方法將返回0,因為在浮點數中,x不是有效字符。此外,parseFloat()沒有基模式。
兩者都是從位置0開始查看,直到非有效數字位置,再把有效的部分轉成整數或者浮點數。
但是parseInt()可以帶參數,指定二進制、八進制或者十六進制(默認十進制),可以解析八進制數如“010”、十六進制數“0x10”,而parseFloat()不帶參數,不能解析八進制、十六進制數。
八進制數是以0開頭,parseInt()對于有前導0的會解析成八進制數,而parseFloat()不會解析八進制數,因此八進制數都會被解析成10進制輸出且輸出時忽略前面的0
?十六進制數是以0x開頭,parseInt()會解析成十六進制數,而parseFloat()不會解析十六進制數,就跟“123db”這種類似,從頭開始查看,到非有效數字位置為止,把前面的有效部分轉成十進制,也就是說所有十六進制數都會被轉成0。
另外,parseInt()?parseFloat()對于"123db"這種可以部分轉換,轉成數字123,而Number()就會認為是NaN,因為整個字符串不能完整轉化為數字。
?
在FF、Chrome、IE8、Opera下測試parseInt(“0xA”)均得到0,看書看到書上寫的返回NaN,錯啦……不過該書第二版已經做了更正哈哈。
parseFloat()是將字符串轉換為浮點數,并返回字符串中的數字,直到它到達不是數字部分。
parseInt()可以將任何進制的字符串轉換成整數。
舉報
本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界
7 回答parseInt和parseFloat的區別?
3 回答sum+=parseInt(scores)和sum+=parseInt(scores[i])的區別
1 回答parseFloat和 Float有什么區別
2 回答使用parseInt()函數與不使用有區別嗎?
2 回答parseInt和Number有什么區別?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-05-11
parseInt()方法首先查看位置0處的 字符,判斷它是否是個有效數字;如果不是,該方法將返回NaN,不再繼續執行其他操作。但如果該字符是有效數字,該方法將查看位置1處的字符,進行同樣的 測試。這一過程將持續到發現非有效數字的字符為止,此時parseInt()將把該字符之前的字符串轉換成數字。
例如
如果要把字符串 "1234blue "轉換成整數,那么parseInt()將返回1234,因為當它檢測到字符b時,就會停止檢測過程。
parseInt()方法還有基模式,可以把二進制、八進制、十六進制或其他任何進制的字符串轉換成整數。
基是由parseInt()方法的第二個參數指定的,所以要解析十六進制的值,當然,對二進制、八進制,甚至十進制(默認模式),都可以這樣調用parseInt()方法。
如果十進制數包含前導0,那么最好采用基數10,這樣才不會意外地得到八進制的值。
二、parseFloat()
與parseInt()方法的處理方式相似,從位置0開始查看每個字符,直到找到第一個非有效的字符為止,然后把該字符之前的字符串轉換成數字。
不過,對于這個方法來說,第一個出現的小數點是有效字符。如果有兩個小數點,第二個小數點將被看作無效的, parseFloat()方法會把這個小數點之前的字符串轉換成數字。這意味著字符串 "22.34.5"將被解析成22.34。
使用parseFloat()方法的另一不同之處在于,字符串必須以十進制形式表示浮點數,而不能用八進制形式或十六進制形式。
該方法會忽略前導0,所以八進制數0908將被解析為908。對于十六進制數0xA,該方法將返回0,因為在浮點數中,x不是有效字符。
此外,parseFloat()沒有基模式。
兩者都是從位置0開始查看,直到非有效數字位置,再把有效的部分轉成整數或者浮點數。
但是parseInt()可以帶參數,指定二進制、八進制或者十六進制(默認十進制),可以解析八進制數如“010”、十六進制數“0x10”,而parseFloat()不帶參數,不能解析八進制、十六進制數。
八進制數是以0開頭,parseInt()對于有前導0的會解析成八進制數,而parseFloat()不會解析八進制數,因此八進制數都會被解析成10進制輸出且輸出時忽略前面的0
?十六進制數是以0x開頭,parseInt()會解析成十六進制數,而parseFloat()不會解析十六進制數,就跟“123db”這種類似,從頭開始查看,到非有效數字位置為止,把前面的有效部分轉成十進制,也就是說所有十六進制數都會被轉成0。
另外,parseInt()?parseFloat()對于"123db"這種可以部分轉換,轉成數字123,而Number()就會認為是NaN,因為整個字符串不能完整轉化為數字。
?
在FF、Chrome、IE8、Opera下測試parseInt(“0xA”)均得到0,看書看到書上寫的返回NaN,錯啦……不過該書第二版已經做了更正哈哈。
2016-05-11
parseFloat()是將字符串轉換為浮點數,并返回字符串中的數字,直到它到達不是數字部分。
parseInt()可以將任何進制的字符串轉換成整數。