重新認識parseInt函數

前段時間做了一個簡易的計算器,其中有用到利用parseInt函數,將字符串轉換成數字。由於以前並沒有系統的學習過parseInt這個函數,所以在製作的過程中遇到了一些問題。

打開電腦自帶的計算器可以發現,有個默認的數字0,當點擊下面的數字會相應的改變,因爲輸入框中顯示的數字的類型是字符串,所以在進行運算符運算的時候需要轉成數字,於是就用到了parseInt函數,同時問題也就出現了。點擊0-7數字可以正常顯示其數字,但是當點擊8和9時顯示的是0,這是爲何,百思不得其解?

通過w3school查找,發現原來 parseInt() 有兩個參數,第一參數是要轉換的字符串,而第二個參數是一個基數,表示多少進制。其中有一段說明:當第二個參數爲0或者沒有時,parseInt() 會根據 string 來判斷數字的基數。如果 string 以 "0x" 開頭,parseInt() 會把 string 的其餘部分解析爲十六進制的整數。如果 string 以 0 開頭,那麼 ECMAScript v3 允許 parseInt() 的一個實現把其後的字符解析爲八進制或十六進制的數字。如果 string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析爲十進制的整數。

因爲是字符串相加,所以剛開始默認 ‘0’ 加上 ‘8’ 會變成 ‘08’,而 parseInt('08') 根據上面的說明進行八進制轉換成0,不是我所認爲的十進制轉換成8。只需要改成 parseInt('08',10) 就可以解決問題了。

PS:通常我們的習慣是不寫第二個參數的,所以有時候會造成一些莫名其妙的問題。

PS2:博客搬家了,以後不再 CSDN 更新了,見諒。最新博客地址:http://www.cnblogs.com/yjzhu/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章