JavaScript parseInt0.0000005打印5原理解析
前言
最近,我在開發(fā)項(xiàng)目時(shí)遇到了一個(gè)奇怪的問題,parseInt (0.0000005) === 5??。通常,輸出 0 才是正確的,但為什么是 5?讓我們一起探討這個(gè)問題。
1.什么時(shí)候使用parseInt?
首先,您通常什么時(shí)候使用parseInt?大多數(shù)時(shí)候,我們使用它來解析字符串并返回它的整數(shù)部分。帶著這個(gè)問題,我們來看看parseInt方法。
2.關(guān)于parseInt的一些事情
根據(jù) MDN文檔,“parseInt(string, radix) 函數(shù)解析字符串參數(shù)并返回指定基數(shù)(數(shù)學(xué)數(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 是如何轉(zhuǎn)換數(shù)字的?
當(dāng)parseInt的第一個(gè)參數(shù)是一個(gè)數(shù)字時(shí),它是如何解析的?
事實(shí)上在這里: parseInt(0.0000005) === 5
3.1 第一步?將數(shù)字轉(zhuǎn)換為字符串
讓我們使用 String 函數(shù)檢查基于字符串的值,看看每個(gè)值的輸出是什么
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' 請(qǐng)注意這里
3.2 第二步,做舍入操作
當(dāng)我們使用 parseInt(0.0000005) 時(shí),它實(shí)際等于 parseInt('5e-7')
parseInt 只能將字符串的前導(dǎo)部分解釋為整數(shù)值;它忽略任何不能被解釋為整數(shù)表示法的一部分的代碼單元,并且沒有給出任何這樣的代碼單元被忽略的指示。
parseInt(0.0000005) parseInt('5e-7') // 5
最后,答案將返回 5,只是因?yàn)樗俏ㄒ灰粋€(gè)在非字符 e 之前是數(shù)字的字符,所以其余的 e-7 將被丟棄。”
4. 如何安全獲取浮點(diǎn)數(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原理解析的詳細(xì)內(nèi)容,更多關(guān)于JavaScript parseInt打印原理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
document 和 document.all 分別什么時(shí)候用
document 和 document.all 分別什么時(shí)候用...2006-06-06微信小程序 常見問題總結(jié)(4058,40013)及解決辦法
這篇文章主要介紹了微信小程序 常見問題總結(jié)及解決辦法的相關(guān)資料,這里首先對(duì)微信小程序的結(jié)構(gòu)進(jìn)行了介紹,然后對(duì)常見問題進(jìn)行說明講解,需要的朋友可以參考下2017-01-01微信小程序 支付功能實(shí)現(xiàn)PHP實(shí)例詳解
這篇文章主要介紹了微信小程序 支付功能實(shí)現(xiàn)PHP實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05Umi4集成阿里低代碼框架lowcode-engine實(shí)現(xiàn)
這篇文章主要為大家介紹了Umi4集成阿里低代碼框架lowcode-engine實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08'2'>'10'==true?解析JS如何進(jìn)行隱式類型轉(zhuǎn)換
這篇文章主要為大家介紹了'2'>'10'==true?解析JS如何進(jìn)行隱式類型轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09