javascript parseInt() 函數(shù)的進(jìn)制轉(zhuǎn)換注意細(xì)節(jié)
parseInt(string, radix) 有2個參數(shù),第一個string 是傳入的數(shù)值,第二個radix是 傳入數(shù)值的進(jìn)制,參數(shù)radix 可以忽略,默認(rèn)為 10,各種進(jìn)制的數(shù)轉(zhuǎn)換為 十進(jìn)制整數(shù)(如果不是整數(shù),向下取整)。
radix 的取值范圍是 2~36,如果 radix 為 1 或 radix>36 ,轉(zhuǎn)換結(jié)果將是 NaN ,如果 radix 為 0 或其它值將被忽略,radix 默認(rèn)為 10 。
該函數(shù)要求第一個參數(shù)是字符串,如果不是字符串將被轉(zhuǎn)換成字符串,而且,在進(jìn)行轉(zhuǎn)換之前,字符串參數(shù)的左側(cè)符合進(jìn)制數(shù)所使用字符集的字符被截取出來用于進(jìn)制數(shù)的轉(zhuǎn)換。
字符串參數(shù)開頭和結(jié)尾的空格會被忽略。
parseInt(param,radix) 相當(dāng)于 parseInt(String(param).trim(),radix)
例如, parseInt(010) // 8,處理過程是
010 --> 8 //0 開頭,八進(jìn)制數(shù)
8 --> '8'
parseInt('8') //忽略 radix ,傳入的 第一個參數(shù) 被識別為 10進(jìn)制數(shù)
parseInt(0x10) // parseInt(16) 得到十進(jìn)制16
parseInt(010,16) // parseInt('8',16) ,得到 8
parseInt(010,7) // parseInt('8',7) , 8 超出 7 進(jìn)制數(shù)所使用字符的范圍被丟棄,轉(zhuǎn)換結(jié)果為 NaN
parseInt(0x10,8) // parseInt('16',8) 得到 14
parseInt(0x13,8) // parseInt('19',8) 字符 9 超出了8進(jìn)制數(shù)所使用字符的范圍,被丟棄,轉(zhuǎn)換結(jié)果為 1
如果第一個參數(shù)直接傳入 字符串,忽略 radix ,則:
字符串以 0 開頭,默認(rèn)被識別為 8 進(jìn)制( IE 9 識別為 10進(jìn)制,ie 6-8 識別為 8 進(jìn)制 )
字符串以 0x 開頭,默認(rèn)被識別為 16 進(jìn)制
否則識別為 10進(jìn)制
parseInt('010') //8 ,ie9 得到 10
parseInt('018') //1 ,ie9 得到 18
parseInt('017') //15 , ,ie9 得到 15
parseInt('010',8) //直接識別為8進(jìn)制 ,轉(zhuǎn)換結(jié)果 8
parseInt('010',7) //直接識別為7進(jìn)制 ,轉(zhuǎn)換結(jié)果 7
parseInt('010',16) //直接識別為16進(jìn)制 ,轉(zhuǎn)換結(jié)果 16
parseInt('0x10') //16
parseInt('0x1g') //1
parseInt('0x1f') //31
parseInt('0x10',8) //直接識別為8進(jìn)制 ,字符 x 超出 8進(jìn)制數(shù)所使用字符的范圍,轉(zhuǎn)換結(jié)果 0
parseInt('0x10',15) // 轉(zhuǎn)換結(jié)果 0
parseInt('0x10',16) // 0x 符合 16進(jìn)制數(shù)的表達(dá)格式,被正確識別為 16 進(jìn)制數(shù),轉(zhuǎn)換結(jié)果同 parseInt('10',16) 為 16
parseInt('0x10',17) // 識別為17進(jìn)制,字符 x 超出 17進(jìn)制數(shù)所使用字符的范圍,轉(zhuǎn)換結(jié)果 0
parseInt(true) //NaN ,注意區(qū)別 布爾型在 Number 函數(shù)中的用法, Number(true) //1
需要特別注意的
1/0 // Infinity
Infinity.toString() // 'Infinity'
parseInt(1/0,18) // NaN
parseInt(1/0,19) //18
因?yàn)?字符 i 在 19 進(jìn)制數(shù)使用的字符集內(nèi),字符n 及后面的被丟棄
parseInt(1/0,19) 實(shí)際為 parseInt('i',19)
另外還有
parseInt(NaN,36) // 30191
因?yàn)?字符 n 在 36 進(jìn)制中相當(dāng)于 十進(jìn)制 23,a 相當(dāng)于十進(jìn)制 10,于是有
23*36*36 + 10*36 + 23 = 30191
parseInt(1/0,36) // 1461559270678 ,實(shí)為 parseInt('Infinity',36)
parseFloat 是沒有進(jìn)制參數(shù)的,只能處理10進(jìn)制數(shù)。
parseFloat.length //1
相關(guān)文章
一個友好的.改善的 Object.prototype.toString的實(shí)現(xiàn)
一個友好的.改善的 Object.prototype.toString的實(shí)現(xiàn)...2007-04-04js如何使用Pagination+PageHelper實(shí)現(xiàn)分頁
本文主要介紹了js如何使用Pagination+PageHelper實(shí)現(xiàn)分頁,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06javascript數(shù)組克隆簡單實(shí)現(xiàn)方法
這篇文章主要介紹了javascript數(shù)組克隆簡單實(shí)現(xiàn)方法,實(shí)例分析了JavaScript中concat用于數(shù)組克隆的使用技巧,需要的朋友可以參考下2015-12-12js 實(shí)現(xiàn)獲取name 相同的頁面元素并循環(huán)遍歷的方法
下面小編就為大家?guī)硪黄猨s 實(shí)現(xiàn)獲取name 相同的頁面元素并循環(huán)遍歷的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02