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 批量上传图片实现代码
Jan 28 Javascript
js 可拖动列表实现代码
Dec 13 Javascript
JQuery表单验证插件EasyValidator用法分析
Nov 15 Javascript
JS折半插入排序算法实例
Dec 02 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
Jan 12 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
Dec 08 Javascript
利用Node.js编写跨平台的spawn语句详解
Feb 12 Javascript
详解webpack + vue + node 打造单页面(入门篇)
Sep 23 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
Feb 08 Javascript
利用Console来Debug的10个高级技巧汇总
Mar 26 Javascript
js实现页面多个日期时间倒计时效果
Jun 20 Javascript
微信小程序动态添加和删除组件的现实
Feb 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基础知识:类与对象(5) static
2006/12/13 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
PHP下载大文件失败并限制下载速度的实例代码
2019/05/10 PHP
javascript常用的正则表达式实例
2014/05/15 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
python3简单实现微信爬虫
2015/04/09 Python
Python中模块string.py详解
2017/03/12 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
解决python replace函数替换无效问题
2020/01/18 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
大学生求职中的自我评价
2013/10/01 职场文书
室内设计专业个人的自我评价
2013/10/19 职场文书
服务之星获奖感言
2014/01/21 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL