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 相关文章推荐
认识延迟时间为0的setTimeout
May 16 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
Nov 25 Javascript
Javascript基础教程之switch语句
Jan 18 Javascript
JavaScript函数内部属性和函数方法实例详解
Mar 17 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 Javascript
js判断手机号是否正确并返回的实现代码
Jan 17 Javascript
localStorage的黑科技-js和css缓存机制
Feb 06 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
Apr 10 Javascript
jquery平滑滚动到顶部插件使用详解
May 08 jQuery
vue.js 左侧二级菜单显示与隐藏切换的实例代码
May 23 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
Sep 02 Javascript
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+mysql实现简单的增删改查功能
2015/07/13 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
js类中获取外部函数名的方法
2007/08/19 Javascript
使用JavaScript switch case 另类写法
2010/03/14 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
django中使用vue.js的要点总结
2019/07/07 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
Python中文编码那些事
2014/06/25 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
Python读取yaml文件的详细教程
2020/07/21 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
viagogo波兰票务平台:演唱会、体育比赛、戏剧门票
2018/04/23 全球购物
活动总结报告范文
2014/05/04 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
地方课程教学计划
2015/01/19 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python
Python 语言实现六大查找算法
2021/06/30 Python
pytorch中的 .view()函数的用法介绍
2022/03/17 Python
Elasticsearch 索引操作和增删改查
2022/04/19 Python