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 相关文章推荐
一些易混淆且不常用的属性,希望有用
Jan 29 Javascript
用prototype实现的简单小巧的多级联动菜单
Mar 24 Javascript
ajax无刷新动态调用股票信息(改良版)
Nov 01 Javascript
微信小程序 自定义对话框实例详解
Jan 20 Javascript
数组Array的一些方法(总结)
Feb 17 Javascript
JS中双击和单击事件冲突的解决方法
Apr 09 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
Nov 04 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
Mar 13 Javascript
JS实现随机抽选获奖者
Nov 07 Javascript
浅谈JavaScript节流和防抖函数
Aug 25 Javascript
vue中element 的upload组件发送请求给后端操作
Sep 07 Javascript
Ajax异步刷新功能及简单案例
Nov 20 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初学者们头痛的十四个问题
2007/01/15 PHP
js 数值项目的格式化函数代码
2010/05/14 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
详谈python read readline readlines的区别
2017/09/22 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Python猜数字算法题详解
2020/03/01 Python
python中的django是做什么的
2020/07/31 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
类和结构的区别
2012/08/15 面试题
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
项目投资合作意向书
2014/07/29 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
入伍通知书
2015/04/23 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
新手必备Python开发环境搭建教程
2021/05/28 Python
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
分析并发编程之LongAdder原理
2021/06/29 Java/Android
Sql Server之数据类型详解
2022/02/28 SQL Server
apache ftpserver搭建ftp服务器
2022/05/20 Servers
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS