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 相关文章推荐
网站页面自动跳转实现方法PHP、JSP(上)
Aug 01 Javascript
Script的加载方法小结
Jan 12 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
Apr 12 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
Aug 27 Javascript
js实现简单折叠、展开菜单的方法
Aug 28 Javascript
javascript正则表达式总结
Feb 29 Javascript
简单三步实现报表页面集成天气
Dec 15 Javascript
基于jquery实现多级菜单效果
Jul 25 jQuery
javaScript 实现重复输出给定的字符串的常用方法小结
Feb 20 Javascript
element-ui 实现响应式导航栏的示例代码
May 08 Javascript
Javascript webpack动态import
Apr 19 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 前一天或后一天的日期
2008/06/28 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
php中的ini配置原理详解
2014/10/14 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
python解析html开发库pyquery使用方法
2014/02/07 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
python的pip安装以及使用教程
2018/09/18 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
django框架中间件原理与用法详解
2019/12/10 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
Python实现EM算法实例代码
2020/10/04 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
python爬取微博评论的实例讲解
2021/01/15 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
C#面试常见问题
2013/02/25 面试题
管理信息系学生的自我评价
2014/01/11 职场文书
村委会贫困证明
2014/01/14 职场文书
学习礼仪心得体会
2014/09/01 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript