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 相关文章推荐
地址栏上的一段语句,改变页面的风格。(教程)
Apr 02 Javascript
jquery鼠标停止移动事件
Dec 21 Javascript
使用typeof方法判断undefined类型
Sep 09 Javascript
原生javascript实现自动更新的时间日期
Feb 12 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
jQuery自定义图片上传插件实例代码
Apr 04 jQuery
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 Javascript
快速搭建vue2.0+boostrap项目的方法
Apr 09 Javascript
JS实现从对象获取对象中单个键值的方法示例
Jun 05 Javascript
微信小程序开发摇一摇功能
Nov 22 Javascript
vue 使用 canvas 实现手写电子签名
Mar 06 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 删除记录实现代码
2009/03/12 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
文本框的字数限制功能jquery插件
2009/11/24 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
学习Node.js模块机制
2016/10/17 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
Python标准库与第三方库详解
2014/07/22 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
python中upper是做什么用的
2020/07/20 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
以下的初始化有什么区别
2013/12/16 面试题
机械制造毕业生求职信
2014/03/03 职场文书
2014年护士长工作总结
2014/11/11 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
总经理司机岗位职责
2015/04/10 职场文书
PHP实现rar解压读取扩展包小结
2021/06/03 PHP