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 标题的自动翻转实现代码
Oct 14 Javascript
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
html5 canvas js(数字时钟)实例代码
Dec 23 Javascript
对JavaScript中this指针的新理解分享
Jan 31 Javascript
JavaScript中return用法示例
Nov 29 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
Sep 19 Javascript
vue中element组件样式修改无效的解决方法
Feb 03 Javascript
ng-repeat指令在迭代对象时的去重方法
Oct 02 Javascript
Angular4 Select选择改变事件的方法
Oct 09 Javascript
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 28 Javascript
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
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程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
SWFObject Flash js调用类
2008/07/08 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
python循环监控远程端口的方法
2015/03/14 Python
分享Python文本生成二维码实例
2016/01/06 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
Python模块相关知识点小结
2020/03/09 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
Python中Selenium模块的使用详解
2020/10/09 Python
Python读写锁实现实现代码解析
2020/11/28 Python
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
英语自荐信常用语句
2013/12/13 职场文书
查环查孕证明
2014/01/10 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
英文辞职信范文
2015/05/13 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书