电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:50日期:2022-06-09 14:29:03
目錄
  • 正文
    • 1. parseInt() 的怪異行為
    • 2.解決parseInt()怪異行為
    • 3.總結(jié)

正文

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.50.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)文章!

標(biāo)簽: JavaScript
主站蜘蛛池模板: 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 彩信群发_群发彩信软件_视频短信营销平台-达信通| 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 不锈钢复合板|钛复合板|金属复合板|南钢集团安徽金元素复合材料有限公司-官网 | 开云(中国)Kaiyun·官方网站 - 登录入口| 扬州汇丰仪表有限公司 | 电镀电源整流器_高频电解电源_单脉双脉冲电源 - 东阳市旭东电子科技 | 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | app开发|app开发公司|小程序开发|物联网开发||北京网站制作|--前潮网络 | 湖南自考_湖南自学考试网| 低温等离子清洗机(双气路进口)-嘉润万丰 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 智能终端_RTU_dcm_北斗星空自动化科技| 石英陶瓷,石英坩埚,二氧化硅陶瓷-淄博百特高新材料有限公司 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 缝纫客 | 波纹补偿器_不锈钢波纹补偿器_巩义市润达管道设备制造有限公司 | 迪威娱乐|迪威娱乐客服|18183620002 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 郑州外墙清洗_郑州玻璃幕墙清洗_郑州开荒保洁-河南三恒清洗服务有限公司 | 上海佳武自动化科技有限公司| 河北中仪伟创试验仪器有限公司是专业生产沥青,土工,水泥,混凝土等试验仪器的厂家,咨询电话:13373070969 | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 圈酒招商网【jiushuitv.com】_酒水招商_代理_加盟平台 | 防渗膜厂家|养殖防渗膜|水产养殖防渗膜-泰安佳路通工程材料有限公司 | 翅片管散热器价格_钢制暖气片报价_钢制板式散热器厂家「河北冀春暖气片有限公司」 | 浙江富广阀门有限公司| 西安烟道厂家_排气道厂家_包立管厂家「陕西西安」推荐西安天宇烟道 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 耐热钢-耐磨钢-山东聚金合金钢铸造有限公司 |