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

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

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

瀏覽:55日期: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)還接受第二個參數(shù):從 2 到 36,表示字符串的基數(shù)。例如指定 16 表示被解析值是十六進(jìn)制數(shù)。請注意,10 不是默認(rèn)值,最常見的是 2、8、10 和 16。

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

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

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

1. parseInt() 的怪異行為

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

這就是為什么你可以(但不應(yīng)該)使用parseInt()提取浮點數(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

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

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

parseInt(0.0000005); // => 5

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

2.解決parseInt()怪異行為

我們再看一看 parseInt(numericalString) 的第一個參數(shù):如果它不是字符串,則將其轉(zhuǎn)換為字符串,然后解析,并返回解析后的整數(shù)。

這可能是第一個線索。

然后,我們嘗試將浮點數(shù)手動轉(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)字符串的行為與其他浮點數(shù)不同:它的表示方式是用指數(shù)的形式。

這是第二個重要的線索!

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

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

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

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

另外,為了安全地提取浮點數(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()提取浮點數(shù)的整數(shù)部分時必須小心。

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

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

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

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

標(biāo)簽: JavaScript
主站蜘蛛池模板: 沈阳液压泵_沈阳液压阀_沈阳液压站-沈阳海德太科液压设备有限公司 | 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 上海小程序开发-上海小程序制作公司-上海网站建设-公众号开发运营-软件外包公司-咏熠科技 | 实战IT培训机构_IT培训班选大学生IT技术培训中心_中公优就业 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 智慧水务|智慧供排水利信息化|水厂软硬件系统-上海敢创 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 泰国专线_泰国物流专线_广州到泰国物流公司-泰廊曼国际 | 特材真空腔体_哈氏合金/镍基合金/纯镍腔体-无锡国德机械制造有限公司 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 365文案网_全网创意文案句子素材站| 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | Win10系统下载_32位/64位系统/专业版/纯净版下载 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 广东机电安装工程_中央空调工程_东莞装饰装修-广东粤标建设有限公司 | 盘扣式脚手架-附着式升降脚手架-移动脚手架,专ye承包服务商 - 苏州安踏脚手架工程有限公司 | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 哈尔滨治「失眠/抑郁/焦虑症/精神心理」专科医院排行榜-京科脑康免费咨询 一对一诊疗 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 热处理炉-退火炉-回火炉设备厂家-丹阳市电炉厂有限公司 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 河南膏药贴牌-膏药代加工-膏药oem厂家-洛阳今世康医药科技有限公司 | 预制围墙_工程预制围墙_天津市瑞通建筑材料有限公司 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 | 智能家居全屋智能系统多少钱一套-小米全套价格、装修方案 | 水压力传感器_数字压力传感器|佛山一众传感仪器有限公司|首页 | 禹城彩钢厂_钢结构板房_彩钢复合板-禹城泰瑞彩钢复合板加工厂 | 合肥触摸一体机_触摸查询机厂家_合肥拼接屏-安徽迅博智能科技 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂 |