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 插件 任意位置浮动固定层
Dec 25 Javascript
Javascript表达式中连续的 && 和 || 之赋值区别
Oct 17 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
Apr 23 Javascript
Jquery ajax基础教程
Nov 20 Javascript
JavaScript中的操作符类型转换示例总结
May 30 Javascript
JavaScript“尽快失败”的原则实例详解
Oct 08 Javascript
使用JavaScript为一张图片设置备选路径的方法
Jan 04 Javascript
javascript添加前置0(补零)的几种方法
Jan 05 Javascript
JavaScript实现垂直滚动条效果
Jan 18 Javascript
详解JavaScript修改注册表的方法
Jan 05 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
Apr 15 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
Jul 17 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实现异步操作的研究
2013/02/03 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
PHP chop()函数讲解
2019/02/11 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
Python 实现简单的电话本功能
2015/08/09 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
微信跳一跳游戏python脚本
2020/04/01 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
python烟花效果的代码实例
2020/02/25 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
个人合伙协议书范本
2014/10/14 职场文书
入股协议书范本
2014/11/01 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
委托书格式要求
2015/01/28 职场文书
给病人的慰问信
2015/03/23 职场文书
敬老院活动感想
2015/08/07 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript