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 ui 1.7更新小结
Aug 15 Javascript
用Jquery选择器计算table中的某一列某一行的合计
Aug 13 Javascript
js的[defer]和[async]属性
Nov 24 Javascript
Javascript实现div层渐隐效果的方法
May 30 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
Aug 21 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
May 17 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
Jun 03 Javascript
javascript数字验证的实例代码(推荐)
Aug 20 Javascript
jQuery Validate 校验多个相同name的方法
May 18 jQuery
浅谈一种让小程序支持JSX语法的新思路
Jun 16 Javascript
初试vue-cli使用HBuilderx打包app的坑
Jul 17 Javascript
vue draggable resizable gorkys与v-chart使用与总结
Sep 05 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常用函数小技巧
2008/09/11 PHP
微信公众平台接口开发入门示例
2014/12/24 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
Python中用format函数格式化字符串的用法
2015/04/08 Python
python检测是文件还是目录的方法
2015/07/03 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
详解Python核心对象类型字符串
2018/02/11 Python
解决python报错MemoryError的问题
2018/06/26 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
Python configparser模块常用方法解析
2020/05/22 Python
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
学习十八大精神心得体会
2013/12/31 职场文书
企业后勤岗位职责
2014/02/28 职场文书
第二课堂活动总结
2014/05/07 职场文书
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android