JavaScript parseInt0.0000005打印5原理解析
前言
最近,我在開發(fā)項目時遇到了一個奇怪的問題,parseInt (0.0000005) === 5??。通常,輸出 0 才是正確的,但為什么是 5?讓我們一起探討這個問題。
1.什么時候使用parseInt?
首先,您通常什么時候使用parseInt?大多數(shù)時候,我們使用它來解析字符串并返回它的整數(shù)部分。帶著這個問題,我們來看看parseInt方法。
2.關于parseInt的一些事情
根據(jù) MDN文檔,“parseInt(string, radix) 函數(shù)解析字符串參數(shù)并返回指定基數(shù)(數(shù)學數(shù)字系統(tǒng)中的基數(shù))的整數(shù)。”
語法
parseInt(string) parseInt(string, radix)
例子
parseInt('0.5') // 0 parseInt('0.5') // 0 parseInt('0.05') // 0 parseInt('0.005') // 0 parseInt('0.0005') // 0 parseInt('0.00005') // 0 parseInt('0.000005') // 0 parseInt('015') // 15 parseInt('015', 8) // 13 parseInt('15px', 10) // 15
3. parseInt 是如何轉換數(shù)字的?
當parseInt的第一個參數(shù)是一個數(shù)字時,它是如何解析的?
事實上在這里: parseInt(0.0000005) === 5
3.1 第一步?將數(shù)字轉換為字符串
讓我們使用 String 函數(shù)檢查基于字符串的值,看看每個值的輸出是什么
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' 請注意這里
3.2 第二步,做舍入操作
當我們使用 parseInt(0.0000005) 時,它實際等于 parseInt('5e-7')
parseInt 只能將字符串的前導部分解釋為整數(shù)值;它忽略任何不能被解釋為整數(shù)表示法的一部分的代碼單元,并且沒有給出任何這樣的代碼單元被忽略的指示。
parseInt(0.0000005) parseInt('5e-7') // 5
最后,答案將返回 5,只是因為它是唯一一個在非字符 e 之前是數(shù)字的字符,所以其余的 e-7 將被丟棄。”
4. 如何安全獲取浮點數(shù)的整數(shù)部分?
推薦使用以下 Math.floor() 函數(shù)
Math.floor(0.5); // => 0 Math.floor(0.05); // => 0 Math.floor(0.005); // => 0 Math.floor(0.0005); // => 0 Math.floor(0.00005); // => 0 Math.floor(0.000005); // => 0 Math.floor(0.0000005); // => 0
5. 舉一反三
現(xiàn)在,你能解釋一下為什么 parseInt(99999999999999999999999999) 等于 1 嗎?
以上就是JavaScript parseInt0.0000005打印5原理解析的詳細內容,更多關于JavaScript parseInt打印原理的資料請關注腳本之家其它相關文章!
相關文章
document 和 document.all 分別什么時候用
document 和 document.all 分別什么時候用...2006-06-06Umi4集成阿里低代碼框架lowcode-engine實現(xiàn)
這篇文章主要為大家介紹了Umi4集成阿里低代碼框架lowcode-engine實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08