作為前端開發(fā)工程師,JavaScript是我們主要的開發(fā)語言,是每個人必須要掌握的,它是弱類型語言,本身語法也比較簡單,最近我發(fā)現了一個奇怪的問題,parseInt(0.0000005)輸出的結果是:5,通常應該輸出0才對!
1.parseInt(0.0000005)
parseInt(0.0000005) // 5
此處考的知識點是:parseInt(string,redix)方法
parseInt(string,redix)方法: 解析一個數字字符串解析為整數的函數,
其中string:要被解析的值;radix是 2-36 之間的整數,表示被解析字符串的基數。redix不是必填
注意:10不是默認值,最常見的值是2,8,10,16
示例:
parseInt(0.05); // 沒有指定或者0,會根據字符串的值進行推算
parseInt('100', 2); // 指定2,表示將"100"以二進制方式解析字符串
parseInt(0.05,16); // 指定16,表示將“0.05”看作是十六進制方式來解析,超出這個范圍將返回NAN
2 parseInt()轉化數字步驟
1.第一步:redix沒有指定,將會使用string()方法將數字轉化為字符串
示例:
string(0.5) // '0.5'
string(0.05) // '0.05'
string(0.005) // '0.005'
string(0.0005) // '0.0005'
string(0.00005) // '0.00005'
string(0.000005) // '0.000005'
string(0.0000005) // '5e-7' 重點注意這里表示方式是用指數的形式 string小于10負6次方的浮點數將以指數表示
2.第二步:做舍入操作提取整數
parseInt(string,redix)方法只能將字符串的前導部分解釋為整數,它忽略任何不能被解釋為整數表示法的一部分代碼,并且沒有給出任何這樣的代碼單元被忽略的指示。
parseInt() 用于字符串和非空數組,會取出其中整數部分 ( 數組的話是取第 1 個元素來處理 ) ,返回一個新的整數。
parseInt(0.0000005) 等于 parseInt("5e-7")
parseInt("5e-7") // 5
parseInt("0.00005") //0
parseInt("0.0005") //0
parseInt("0.005") //0
parseInt("0.05") //0
parseInt(['11.45','22']) //11
parseInt(['aa11.1','22.2']) //NAN
解釋:5e-7:5是唯一一個在非字符 e 之前是數字的字符,所以其余的 e-7 將被丟棄; 0.005: 是浮點數,只會提取浮點數的整數部分
3 總結
使用parseInt()方法提取浮點數的整數部分時要小心了,小于10負6次方的浮點數將會以指數表示,因此可以用Math.floor()函數來提取浮點數。