最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文搞懂?parseInt()函數(shù)異常行為

 更新時(shí)間:2023年05月15日 14:31:08   作者:前端小智  
這篇文章主要為大家介紹了一文搞懂?parseInt()函數(shù)異常行為示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

parseInt()是內(nèi)置的 JS 函數(shù),用于解析數(shù)字字符串中的整數(shù)。 例如,解析數(shù)字字符串'100'

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

如預(yù)期的那樣,'100'被解析為整數(shù) 100

parseInt(numericalString, radix)還接受第二個(gè)參數(shù):從 2 到 36,表示字符串的基數(shù)。例如指定 16 表示被解析值是十六進(jìn)制數(shù)。請(qǐng)注意,10 不是默認(rèn)值,最常見(jiàn)的是 2、8、10 和 16。

例如我們使用 parseInt 以二進(jìn)制方式解析數(shù)字字符串:

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

100 對(duì)應(yīng)的二進(jìn)制數(shù)是 4,所以返回 4。

1. parseInt() 的怪異行為

parseInt(numericalString)始終將其第一個(gè)參數(shù)轉(zhuǎn)換為字符串(如果不是字符串),然后將該數(shù)字字符串解析為整數(shù)值。

這就是為什么你可以(但不應(yīng)該)使用parseInt()提取浮點(diǎn)數(shù)的整數(shù)部分的原因:

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

提取浮點(diǎn)數(shù)的整數(shù)部分,如0.5、0.05等,結(jié)果為0, 這和預(yù)期的一樣。

那提取0.0000005的整數(shù)部分怎么樣?

parseInt(0.0000005); // => 5

parseInt() 將浮點(diǎn)數(shù) 0.0000005 解析為 5。為什么 parseInt(0.0000005) 有這樣一個(gè)怪異的行為?

2.解決parseInt()怪異行為

我們?cè)倏匆豢?nbsp;parseInt(numericalString) 的第一個(gè)參數(shù):如果它不是字符串,則將其轉(zhuǎn)換為字符串,然后解析,并返回解析后的整數(shù)。

這可能是第一個(gè)線索。

然后,我們嘗試將浮點(diǎn)數(shù)手動(dòng)轉(zhuǎn)換為字符串表示形式:

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'

顯式轉(zhuǎn)換為string(0.0000005)字符串的行為與其他浮點(diǎn)數(shù)不同:它的表示方式是用指數(shù)的形式。

這是第二個(gè)重要的線索!

當(dāng)指數(shù)符號(hào)被解析為整數(shù)時(shí),我們會(huì)得到數(shù)字5

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

parseInt('5e-7')考慮第一個(gè)數(shù)字'5',但跳過(guò)'e-7'

謎團(tuán)已揭開(kāi)! 因?yàn)?nbsp;parseInt() 始終將其第一個(gè)參數(shù)轉(zhuǎn)換為字符串,所以小于10負(fù)6次方的浮點(diǎn)數(shù)將以指數(shù)表示。 然后 parseInt() 從 float 的指數(shù)表示法中提取整數(shù)。

另外,為了安全地提取浮點(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

3.總結(jié)

parseInt() 是將數(shù)字字符串解析為整數(shù)的函數(shù)。

嘗試使用parseInt()提取浮點(diǎn)數(shù)的整數(shù)部分時(shí)必須小心。

小于10的-6次方 (例如0.0000005,也就是5*10-7)的浮點(diǎn)數(shù)轉(zhuǎn)換成字符串時(shí)被寫成指數(shù)表示法(例如5e-7是0.0000005的指數(shù)表示法)。這就是為什么在 parseInt() 中使用這么小的浮點(diǎn)數(shù)會(huì)導(dǎo)致意想不到的結(jié)果:只有指數(shù)表記的重要部分(例如 5e-7 中的 5)會(huì)被解析。

那么現(xiàn)在大家可以試著解釋為什么 parseInt(999999999999999999999)等于1?

代碼部署后可能存在的BUG沒(méi)法實(shí)時(shí)知道,事后為了解決這些BUG,花了大量的時(shí)間進(jìn)行l(wèi)og 調(diào)試,這邊順便給大家推薦一個(gè)好用的BUG監(jiān)控工具 Fundebug

以上就是一文搞懂 parseInt()函數(shù)異常行為的詳細(xì)內(nèi)容,更多關(guān)于parseInt()函數(shù)一次的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 高效率JavaScript編寫技巧整理

    高效率JavaScript編寫技巧整理

    最近在編寫一個(gè)JavaScript框架,發(fā)現(xiàn)有很多細(xì)節(jié)注意得不夠,于是開(kāi)始關(guān)注JavaScript提高效率的一些技巧,在這里分享給大家,感興趣的你可以參考下
    2013-08-08
  • js實(shí)現(xiàn)簡(jiǎn)單擲骰子小游戲

    js實(shí)現(xiàn)簡(jiǎn)單擲骰子小游戲

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)單搖篩子小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 微信小程序框架wepy之動(dòng)態(tài)控制類名

    微信小程序框架wepy之動(dòng)態(tài)控制類名

    這篇文章主要為大家詳細(xì)介紹了微信小程序框架wepy之動(dòng)態(tài)控制類名,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Kimi模型調(diào)用聯(lián)動(dòng)前端簡(jiǎn)單交互頁(yè)面實(shí)現(xiàn)方法

    Kimi模型調(diào)用聯(lián)動(dòng)前端簡(jiǎn)單交互頁(yè)面實(shí)現(xiàn)方法

    這篇文章主要介紹了如何使用Flask搭建一個(gè)簡(jiǎn)單的AI聊天應(yīng)用,并通過(guò)OpenAI?API實(shí)現(xiàn)對(duì)話功能,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • JS模擬實(shí)現(xiàn)京東快遞單號(hào)查詢

    JS模擬實(shí)現(xiàn)京東快遞單號(hào)查詢

    這篇文章主要為大家詳細(xì)介紹了JS模擬實(shí)現(xiàn)京東快遞單號(hào)查詢,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • js實(shí)現(xiàn)手機(jī)拍照上傳功能

    js實(shí)現(xiàn)手機(jī)拍照上傳功能

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)手機(jī)拍照上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • JavaScript數(shù)組去重的幾種方法效率測(cè)試

    JavaScript數(shù)組去重的幾種方法效率測(cè)試

    JavaScript數(shù)組去重是前端面試酷愛(ài)的問(wèn)題,問(wèn)題簡(jiǎn)單而又能看出程序員對(duì)計(jì)算機(jī)程序執(zhí)行過(guò)程的理解如何。數(shù)組去重的方法有很多,到底哪種是最理想的我不清楚。于是我測(cè)試了下數(shù)組去重的效率。測(cè)試二十萬(wàn)個(gè)數(shù)據(jù),隨著數(shù)據(jù)越多效率很明顯的就體驗(yàn)了出來(lái)。下面來(lái)一起看看吧。
    2016-10-10
  • JavaScript作用域鏈實(shí)例詳解

    JavaScript作用域鏈實(shí)例詳解

    這篇文章主要介紹了JavaScript作用域鏈,結(jié)合實(shí)例形式較為詳細(xì)的分析了作用域鏈的原理、功能與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-01-01
  • 一個(gè)js的tab切換效果代碼[代碼分離]

    一個(gè)js的tab切換效果代碼[代碼分離]

    看了此文(YUI實(shí)現(xiàn)的Tab 切換),有感而發(fā),寫了一個(gè)tab切換的函數(shù),做學(xué)習(xí)之用。原生js實(shí)現(xiàn),因?yàn)榭蚣懿缓猛妗?
    2010-04-04
  • JavaScript中async和await的使用及隊(duì)列詳情

    JavaScript中async和await的使用及隊(duì)列詳情

    這篇文章主要介紹了JavaScript中async和await的使用及隊(duì)列詳情,主要圍繞js中async和await簡(jiǎn)單解析展開(kāi)面試中可能會(huì)問(wèn)到的關(guān)于隊(duì)列的一些場(chǎng)景和知識(shí)點(diǎn),需要的朋友可以參考一下
    2022-07-07

最新評(píng)論

浦江县| 邯郸市| 淮安市| 沧源| 光泽县| 浦北县| 册亨县| 罗城| 青川县| 陇西县| 襄垣县| 东方市| 朝阳县| 湾仔区| 新宁县| 皋兰县| 准格尔旗| 新晃| 石台县| 江永县| 平和县| 明光市| 武山县| 时尚| 禄丰县| 元氏县| 博湖县| 南澳县| 舒兰市| 会宁县| 四会市| 林周县| 璧山县| 抚松县| 嘉祥县| 萨嘎县| 肃宁县| 陈巴尔虎旗| 天水市| 中宁县| 尼玛县|