亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關于JavaScript中parseInt()的一個怪異行為解決

 更新時間:2022年12月05日 10:40:12   作者:Jimmy  
parseInt()是內置的?JS?函數,用于解析數字字符串中的整數,下面這篇文章主要給大家介紹了關于JavaScript中parseInt()的一個怪異行為解決,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

parseInt() 是一個內置的 JavaScript 函數,它可以將數字字符串解析為整數。比如,我們將數字字符串 '100' 解析為整數:

const number = parseInt('100');
number; // 100

如預期那樣,'100' 被解析為整數 100。

parseInt(numericalString, radix) 也接受第二個參數:radix(基數),另一個參數是數字字符串 numericalString。radix 參數允許你解析來自不同數字基數的字符串為整數,基數通常有 2,8, 10 和 16

我們使用基數為 2parseInt() 來解析一個數字字符串:

const number = parseInt('100', 2);
number; // 4

parseInt('100', 2) 以基數 2 解析 '100' 為一個整數:所以它返回十進制數值 4。

上面就是對 parseInt() 方法的簡單介紹。

1. parseInt() 中的一個怪異行為

parseInt(numericalString) 總是將其第一個參數轉換成字符串(如果它不是字符串的話),然后將這個字符串數字解析成整數。

這就是為什么你可以(但是不應這么做! )使用 parseInt() 來提取浮點數的整數部分:

parseInt(0.5); // => 0
parseInt(0.05); // => 0
parseInt(0.005); // => 0
parseInt(0.0005); // => 0
parseInt(0.00005); // => 0
parseInt(0.000005); // => 0

取出浮點數,比如 0.5,0.05 等等整數的部分。結果就是 0。這跟我們的預期結果一樣。

那么提取 0.0000005 整數的部分會怎樣呢?

parseInt(0.0000005); // => 5

parseInt() 將浮點數 0.0000005 解析為 5。這就很有趣且不符合預期...

為什么 parseInt(0.0000005) 會有如此怪異的行為呢?

2.解決 parseInt() 該怪異行為

我們回顧下,parseInt(numericalString) 對它的第一個參數做了什么:如果不是字符串,就將其轉換為一個字符串,然后解析,之后返回解析的整數。

這可能是第一個線索。

我們手動將浮點數轉換為字符串表現形式:

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(0.0000005) 數值的顯式轉換和其它浮點數不同:它是指數符號exponential notation 字符串表現形式。

這是第二個線索 -- 很重要!

然后當指數符號字符串解析為整數,你就會得到整數 5

parseInt(0.0000005); // => 5
// same as
parseInt(5e-7); // => 5
// same as
parseInt('5e-7'); // => 5

parseInt('5e-7') 考慮第一個數字 '5',跳過了 'e-7'。

解密了!因為 parseInt() 總是將它第一個參數轉換為字符串,浮點數字小于 10−610^{-6}10−6 就會被寫成指數符號的形式。parseInt() 從浮點數的指數符號中取出整數。

譯者加 -- 注意,parseInt() 取字符串前面整數的部分,比如:parseInt('12Jimmy34') 則有返回結果 12

備注,安全地取出浮點數整數的部分,我推薦使用 Math.floor() 函數:

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

3. 總結

parseInt() 是個將數字字符串轉換為整數的函數。

當你使用 parseInt() 獲取浮點數的整數部分的時候,要小心。

小于 10−610^{-6}10−6 的浮點數(比如 0.0000005 等同于 5∗10−75 * 10^{-7}5∗10−7)被轉換為以指數符號表示形式(比如 5e-70.0000005 指數符號形式)。這就是為什么使用 parseInt() 作用于如此小的浮點數會出現非預期效果:僅解析指數表示形式的重要部分(比如 5e-7 中的 5)。

挑戰(zhàn):你可以解釋為什么 parseInt(999999999999999999999) 會等于 1?

到此這篇關于JavaScript中parseInt()的一個怪異行為解決的文章就介紹到這了,更多相關js中parseInt()怪異行為內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

原文鏈接 Solving a Mystery Behavior of parseInt() in JavaScript -- 作者 Dmitri Pavlutin

相關文章

  • viewer.js一個強大的基于jQuery的圖像查看插件(支持旋轉、縮放)

    viewer.js一個強大的基于jQuery的圖像查看插件(支持旋轉、縮放)

    這篇文章主要介紹了Viewer這一款強大的 jQuery 圖像瀏覽插件,在信息詳情頁面實現點擊圖片可以預覽,腳本之家也是用的這個js,這里為分享一下使用方法,需要的朋友可以參考下
    2020-04-04
  • Bootstrap每天必學之警告框插件

    Bootstrap每天必學之警告框插件

    Bootstrap每天必學之警告框插件,使用警告框(Alert)插件,您可以向所有的警告框消息添加可取消(dismiss)功能,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 如何用JS實現網頁瀑布流布局

    如何用JS實現網頁瀑布流布局

    這篇文章主要介紹了如何用JS實現網頁瀑布流布局,幫助大家更好的利用JavaScript制作網頁,感興趣的朋友可以了解下
    2021-04-04
  • 詳談構造函數加括號與不加括號的區(qū)別

    詳談構造函數加括號與不加括號的區(qū)別

    下面小編就為大家?guī)硪黄斦剺嬙旌瘮导永ㄌ柵c不加括號的區(qū)別。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 如何利用JavaScript編寫一個格斗小游戲

    如何利用JavaScript編寫一個格斗小游戲

    這篇文章主要給大家介紹了關于如何利用JavaScript編寫一個格斗小游戲,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • uni-app小程序中父組件和子組件傳值的實現實例

    uni-app小程序中父組件和子組件傳值的實現實例

    uniapp父子組件引用傳值,和vue的一樣,沒有小程序那樣的麻煩,下面這篇文章主要給大家介紹了關于uni-app小程序中父組件和子組件傳值的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • JavaScript canvas實現七彩時鐘效果

    JavaScript canvas實現七彩時鐘效果

    這篇文章主要為大家詳細介紹了JavaScript canvas實現七彩時鐘效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • js監(jiān)聽鼠標事件控制textarea輸入字符串的個數

    js監(jiān)聽鼠標事件控制textarea輸入字符串的個數

    一個js控制textarea輸入字符串的個數的腳本,當鼠標按下抬起時判斷輸入字符數,很簡單,但很實用
    2014-09-09
  • es7學習教程之Decorators(修飾器)詳解

    es7學習教程之Decorators(修飾器)詳解

    這篇文章主要給大家介紹了關于es7中Decorators(修飾器)的相關資料,文中通過示例代碼給大家介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。
    2017-07-07
  • JavaScript Math對象和調試程序的方法分析

    JavaScript Math對象和調試程序的方法分析

    這篇文章主要介紹了JavaScript Math對象和調試程序的方法,結合實例形式分析了javascript中Math對象生成隨機數以及使用alert()、console.log()函數進行錯誤調試相關操作技巧,需要的朋友可以參考下
    2019-05-05

最新評論