关于parseInt()里的一些小坑
parseInt(string,radix)方法是將輸入字符串轉(zhuǎn)化為數(shù)值,兩個(gè)輸入?yún)?shù)中string為要轉(zhuǎn)化的字符串,radix可省略,是瀏覽器以幾進(jìn)制來解讀輸入的string。
舉幾個(gè)例子就能夠?qū)υ摲椒ㄓ谢镜牧私饬?#xff0c;如下:
parseInt("123"); //123
parseInt("123ab123"); //輸出123 ?因?yàn)槌霈F(xiàn)字母所以該字母及之后的字符都不被解析
若輸入字符串首位是0或者0x之外的數(shù)字,則在radix缺省的情況下,默認(rèn)解讀為10進(jìn)制。
?
0X默認(rèn)解讀為16進(jìn)制
parseInt("0x10"); //字符串以0x開頭則將之后的數(shù)字按16進(jìn)制解讀,16進(jìn)制的10也就是十進(jìn)制的16, 因此輸出為16
parseInt("0xa"); //10,要注意16進(jìn)制包括0~9,a~f (也就是10~15),超出該范圍的字符不被解讀。
parseInt("0xg"); //NAN
這三個(gè)例子分別等價(jià)于 parseInt("0x10",16) ?parseInt("0xa",16) ?parseInt("0xg",16)
?
以0開頭的默認(rèn)解讀為八進(jìn)制,但是不同瀏覽器解讀方式不同,
parseInt("011"); //chrome下輸出為11也就是會忽略首位的0,將011當(dāng)成10進(jìn)制解讀,別的瀏覽器未測試--
parseInt("011",8); //此時(shí)會輸出正確的9
因?yàn)檫@個(gè)坑,所以建議需要以八進(jìn)制解讀時(shí),帶上第二參數(shù)radix并設(shè)置為8,以免出問題
parseInt("09",8); //八進(jìn)制取值范圍為0~7,不包括9,因此9不能被解讀,這時(shí)相當(dāng)于parseInt("0",8);輸出0
?
?
最后有一個(gè)特殊情況:
parseInt("0.000000434"); //4
parseInt("0.00000434"); //0
造成這種情況的原因可能是因?yàn)?#xff1a;
document.write(0.000000434+"<br/>"); //4.34e-7
document.write(0.00000434+"<br/>");//0.00000434
當(dāng)小數(shù)點(diǎn)后有6個(gè)或者以上的0時(shí),會以科學(xué)記數(shù)法存儲,所以--。
?
?
部分內(nèi)容參考https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
?
轉(zhuǎn)載于:https://www.cnblogs.com/lesliecn/p/7301601.html
總結(jié)
以上是生活随笔為你收集整理的关于parseInt()里的一些小坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Effective objective-
- 下一篇: python中的装饰器