JavaScript parseInt0.0000005打印5原理解析


Posted in Javascript onJuly 23, 2022

前言

最近,我在开发项目时遇到了一个奇怪的问题,parseInt (0.0000005) === 5?。通常,输出 0 才是正确的,但为什么是 5?让我们一起探讨这个问题。

1.什么时候使用parseInt?

首先,您通常什么时候使用parseInt?大多数时候,我们使用它来解析字符串并返回它的整数部分。带着这个问题,我们来看看parseInt方法。

2.关于parseInt的一些事情

根据 MDN文档,“parseInt(string, radix) 函数解析字符串参数并返回指定基数(数学数字系统中的基数)的整数。”

语法

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 是如何转换数字的?

当parseInt的第一个参数是一个数字时,它是如何解析的?

事实上在这里: parseInt(0.0000005) === 5

3.1 第一步?将数字转换为字符串

让我们使用 String 函数检查基于字符串的值,看看每个值的输出是什么

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' 请注意这里

3.2 第二步,做舍入操作

当我们使用 parseInt(0.0000005) 时,它实际等于 parseInt('5e-7')

parseInt 只能将字符串的前导部分解释为整数值;它忽略任何不能被解释为整数表示法的一部分的代码单元,并且没有给出任何这样的代码单元被忽略的指示。

parseInt(0.0000005)
parseInt('5e-7') // 5

最后,答案将返回 5,只是因为它是唯一一个在非字符 e 之前是数字的字符,所以其余的 e-7 将被丢弃。”

4. 如何安全获取浮点数的整数部分?

推荐使用以下 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

5. 举一反三

现在,你能解释一下为什么 parseInt(99999999999999999999999999) 等于 1 吗?

以上就是JavaScript parseInt0.0000005打印5原理解析的详细内容,更多关于JavaScript parseInt打印原理的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
Jquery选择子控件"大于号"和" "区别介绍及使用示例
Jun 25 Javascript
JavaScript中判断整字类型最简洁的实现方法
Nov 08 Javascript
javascript实现网页字符定位的方法
Jul 14 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
Dec 05 Javascript
js获取html的span标签的值方法(超简单)
Jul 26 Javascript
JS清除字符串中重复值的实现方法
Aug 03 Javascript
详解js数组的完全随机排列算法
Dec 16 Javascript
vue 使用Jade模板写html,stylus写css的方法
Feb 23 Javascript
深入理解Vue Computed计算属性原理
May 29 Javascript
在vue中使用G2图表的示例代码
Mar 19 Javascript
7个你应该知道的JS原生错误类型
Apr 29 Javascript
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
JavaScript实现一键复制内容剪贴板
Jul 23 #Javascript
从原生JavaScript到React深入理解
Jul 23 #Javascript
JS前端监控采集用户行为的N种姿势
Jul 23 #Javascript
JS前端可扩展的低代码UI框架Sunmao使用详解
Jul 23 #Javascript
uniapp引入支付宝原生扫码插件步骤详解
Jul 23 #Javascript
JS前端宏任务微任务及Event Loop使用详解
Jul 23 #Javascript
关于对TypeScript泛型参数的默认值理解
Jul 15 #Javascript
You might like
php中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
python基础教程项目三之万能的XML
2018/04/02 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
python批量获取html内body内容的实例
2019/01/02 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
医学毕业生自我鉴定
2013/10/30 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
小学教师培训感言
2014/02/11 职场文书
党建示范点实施方案
2014/03/12 职场文书
七一党日活动总结
2014/07/08 职场文书
2014年环保局工作总结
2014/12/11 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL