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 相关文章推荐
js玩一玩WSH吧
Feb 23 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
May 11 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
Feb 04 Javascript
简单掌握JavaScript中const声明常量与变量的用法
May 21 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
Nov 02 Javascript
原生JS简单实现ajax的方法示例
Nov 29 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
基于jQuery解决ios10以上版本缩放问题
Nov 03 jQuery
JavaScript ES6常用基础知识总结
Feb 09 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
Apr 09 Javascript
AngularJs中$cookies简单用法分析
May 30 Javascript
javascript实现简单打字游戏
Oct 29 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生成静态HTML速度快类库
2007/03/18 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
js压缩利器
2007/02/20 Javascript
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
低版本中Python除法运算小技巧
2015/04/05 Python
Python中几个比较常见的名词解释
2015/07/04 Python
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
详解Python自建logging模块
2018/01/29 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
电子专业推荐信范文
2013/11/18 职场文书
好员工观后感
2015/06/17 职场文书
教育读书笔记
2015/07/02 职场文书