parseInt原来是这样用的
今天在群里無意中看到了這樣一個問題,突然發(fā)現(xiàn)不會,結(jié)果運行一看,懵逼了,不知道為什么???(結(jié)果是啥?自己去試試看)
現(xiàn)在我們還是先來復習一下parseInt()這個知識點吧!
parseInt() 函數(shù)可解析一個字符串,并返回一個整數(shù)?!?/p>
當參數(shù) radix 的值為 0,或沒有設(shè)置該參數(shù)時,parseInt() 會根據(jù) string 來判斷數(shù)字的基數(shù)。
當忽略參數(shù) radix , JavaScript 默認數(shù)字的基數(shù)如下:
如果 string 以 "0x" 開頭,parseInt() 會把 string 的其余部分解析為十六進制的整數(shù)
如果 string 以 0 開頭,那么 ECMAScript v3 允許 parseInt() 的一個實現(xiàn)把其后的字符解析為八進制或十六進制的數(shù)字。
如果 string 以 1 ~ 9 的數(shù)字開頭,parseInt() 將把它解析為十進制的整數(shù)。
提示和注釋
注意:只有字符串中的第一個數(shù)字會被返回。
注意:開頭和結(jié)尾的空格是允許的。
注意:如果字符串的第一個字符不能被轉(zhuǎn)換為數(shù)字,那么 parseFloat() 會返回 NaN。
注意:在字符串以"0"為開始時舊的瀏覽器默認使用八進制基數(shù)。ECMAScript 5,默認的是十進制的基數(shù)。
下面來看具體的實例吧:
下面再來一個稍微難點的:
很奇怪有木有,其實是這樣的,當小數(shù)點后的0的個數(shù)小于等于5個時,會采用字面量形式直接表示,當小數(shù)點后0的個數(shù)大于5個時,會采用科學計數(shù)法來表示,即:0.000005不會采用科學計數(shù)法,而0.0000005則會轉(zhuǎn)換為5e-7,parseInt方法不會將"e"視為數(shù)字,因此只是將5轉(zhuǎn)換為10進制,還是5。
同理,當小數(shù)點前數(shù)字位數(shù)為21及以下的時候,會采用字面量形式直接表示,而當小數(shù)點前數(shù)字位數(shù)大于21的時候。會采用科學計數(shù)法,因此6000000000000000000000會轉(zhuǎn)換為科學計數(shù)法,為6e+21,將6轉(zhuǎn)換為10進制還是6
為什么會這樣?其實是這樣的,第一個中,會將2進制的11轉(zhuǎn)換為10進制,自然就是3了。第二個中,會先將011按八進制來解析,就是9了,而二進制中不存在9,因此為NaN
至于第三個嘛,會將011按八進制解析為9,parseInt() 將把它解析為十進制的整數(shù),自然就是9了
好了,就說到這里了,至于開篇講到的那個問題,我也不知道為什么???
這里再來一波,懵逼了有木有?自己解決去吧。
總結(jié)
以上是生活随笔為你收集整理的parseInt原来是这样用的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot 获取applica
- 下一篇: 微信视频号用户总使用时长接近朋友圈 80