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 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 Javascript
JS比较两个时间大小的简单示例代码
Dec 20 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
Sep 25 Javascript
js中的DOM模拟购物车功能
Mar 22 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
Express之托管静态文件的方法
Jun 01 Javascript
微信小程序使用gitee进行版本管理
Sep 20 Javascript
微信小程序时间控件picker view使用详解
Dec 28 Javascript
详解webpack引入第三方库的方式以及注意事项
Jan 15 Javascript
vue学习笔记之Vue中css动画原理简单示例
Feb 29 Javascript
js实现文字头像的生成代码
Mar 07 Javascript
可拖拽组件slider.js使用方法详解
Dec 04 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获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
你必须知道的Javascript知识点之"深入理解作用域链"的介绍
2013/04/23 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
Bootstrap基础学习
2015/06/16 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
Python3 入门教程 简单但比较不错
2009/11/29 Python
java直接调用python脚本的例子
2014/02/16 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
python多进程使用函数封装实例
2020/05/02 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
2014两会优秀的心得体会范文
2014/03/17 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL