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中的this实例分析
Apr 28 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
Sep 14 Javascript
onbeforeunload与onunload事件异同点总结
Jun 24 Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 Javascript
javascript常用的方法整理
Aug 20 Javascript
微信小程序 地图定位简单实例
Oct 14 Javascript
js倒计时小实例(多次定时)
Dec 08 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
如何解决vue2.0下IE浏览器白屏问题
Sep 13 Javascript
vue添加axios,并且指定baseurl的方法
Sep 19 Javascript
vue中对象数组去重的实现
Feb 06 Javascript
搭建vscode+vue环境的详细教程
Aug 31 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
列举Python中吸引人的一些特性
2015/04/09 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Python 元组操作总结
2019/09/18 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
python 基于wx实现音乐播放
2020/11/24 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
销售演讲稿范文
2014/01/08 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
公休请假条
2014/04/11 职场文书
四年级学生评语大全
2014/04/21 职场文书
员工团队活动方案
2014/08/28 职场文书
2014年党员自我剖析材料
2014/10/07 职场文书
小班下学期个人总结
2015/02/12 职场文书
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫