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