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 相关文章推荐
JavaScript类库D
Oct 24 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
Jun 21 Javascript
php中给js数组赋值方法
Mar 10 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
Sep 18 Javascript
vue.js实现价格格式化的方法
May 23 Javascript
nginx配置React静态页面的方法教程
Nov 03 Javascript
Vue2 模板template的四种写法总结
Feb 23 Javascript
Webpack 之 babel-loader文件预处理器详解
Mar 23 Javascript
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
Nov 19 Javascript
JS Object构造函数之Object.freeze
Apr 28 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中计算字符串相似度的函数代码
2012/12/29 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
JS实现可关闭的对联广告效果代码
2015/09/14 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
Element Badge标记的使用方法
2020/07/27 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
[03:10]2014DOTA2 TI马来劲旅Titan首战告捷目标只是8强
2014/07/10 DOTA
Python如何获取系统iops示例代码
2016/09/06 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
python else语句在循环中的运用详解
2020/07/06 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
2013年员工自我评价范文
2013/12/27 职场文书
暑期培训随笔感言
2014/03/10 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
入党转正申请报告
2015/05/15 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书