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 replace()正则替换实现代码
Feb 26 Javascript
JS数组的赋值介绍
Mar 10 Javascript
jQuery表格排序组件-tablesorter使用示例
May 26 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
Aug 25 Javascript
浅析AngularJs HTTP响应拦截器
Dec 28 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
利用C/C++编写node.js原生模块的方法教程
Jul 07 Javascript
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
详解小程序开发经验:多页面数据同步
May 18 Javascript
Vue实现拖放排序功能的实例代码
Jul 08 Javascript
html实现随机点名器的示例代码
Apr 02 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
jquery中:input和input的区别分析
2011/07/13 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
angular多语言配置详解
2019/05/16 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
Python简单实现网页内容抓取功能示例
2018/06/07 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
会计专业个人求职信范文
2014/01/08 职场文书
运动会广播稿300字
2014/01/10 职场文书
高中自我评价范文
2014/01/27 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
关于运动会的广播稿
2014/09/22 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
财务审计整改报告
2014/11/06 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python
html5调用摄像头截图功能
2022/01/18 Javascript
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL