關於parseInt 裡的一些小坑

2022-09-04 19:15:11 字數 1056 閱讀 3572

parseint(string,radix)方法是將輸入字串轉化為數值,兩個輸入引數中string為要轉化的字串,radix可省略,是瀏覽器以幾進製來解讀輸入的string。

舉幾個例子就能夠對該方法有基本的了解了,如下:

parseint("123"); //123

parseint("123ab123"); //輸出123  因為出現字母所以該字母及之後的字元都不被解析

若輸入字串首位是0或者0x之外的數字,則在radix預設的情況下,預設解讀為10進製。

0x預設解讀為16進製制

parseint("0x10"); //字串以0x開頭則將之後的數字按16進製制解讀,16進製制的10也就是十進位制的16, 因此輸出為16

parseint("0xa"); //10,要注意16進製制包括0~9,a~f (也就是10~15),超出該範圍的字元不被解讀。

parseint("0xg"); //nan

這三個例子分別等價於 parseint("0x10",16)  parseint("0xa",16)  parseint("0xg",16)

以0開頭的預設解讀為八進位制,但是不同瀏覽器解讀方式不同,

parseint("011"); //chrome下輸出為11也就是會忽略首位的0,將011當成10進製解讀,別的瀏覽器未測試--

parseint("011",8); //此時會輸出正確的9

因為這個坑,所以建議需要以八進位制解讀時,帶上第二引數radix並設定為8,以免出問題

parseint("09",8); //八進位製取值範圍為0~7,不包括9,因此9不能被解讀,這時相當於parseint("0",8);輸出0

最後有乙個特殊情況:

parseint("0.000000434"); //4

parseint("0.00000434"); //0

造成這種情況的原因可能是因為:

document.write(0.000000434+"

");

document.write(0.00000434+"

");當小數點後有6個或者以上的0時,會以科學記數法儲存,所以--。

正則裡的一些小問題

通常來講 w我們可以認為是字元類,包括 a za z0 9 但是這個不僅限於英文中,我們應當考慮俄語等語言裡的字元,也是包括在 w中的,正則本質上還是能通過字元編碼集來實現具體操作的,在ascii碼中,如果要匹配,則應當使用 x,而 w其實預設的字元編碼集是unicode 所以應當注意,dz的使用者...

關於編譯的一些小知識

gnu編譯器 g 編譯 c 程式 在windows下,進入源 所在的路徑下,在命令列中輸入 g o test.exe test.cpp將test.cpp 編譯生成 test.exe 可執行檔案,如果沒有 o test.exe 選項,預設生成 a.exe 在linux下,進入源 所在的路徑下,在命令列...

關於dialog的一些小結

1.自定義dialog繼承dialog,2.或者activity在mainifest中設定 android theme style commondialog android theme.dialog 或者 3.處理一些手機寬高不能與螢幕寬高等同問題 顯示在底部與螢幕寬度一樣 private void...