当前位置:首页 > 科技  > 软件

为什么 JavaScript 的 parseInt(0.0000005) 打印“5”?

来源: 责编: 时间:2023-09-28 10:08:30 419观看
导读前言最近开发项目时遇到一个奇怪的问题,parseInt(0.0000005) === 5。正常情况下输出0是正确的,为什么是5呢?我们一起来探讨一下这个问题。1. 什么时候使用parseInt?首先,你通常什么时候使用parseInt?大多数时候,我们使用它来

前言

cfk28资讯网——每日最新资讯28at.com

最近开发项目时遇到一个奇怪的问题,parseInt(0.0000005) === 5。正常情况下输出0是正确的,为什么是5呢?我们一起来探讨一下这个问题。cfk28资讯网——每日最新资讯28at.com

1. 什么时候使用parseInt?

首先,你通常什么时候使用parseInt?大多数时候,我们使用它来解析字符串并返回其整数部分。带着这个问题,我们来看看parseInt方法。cfk28资讯网——每日最新资讯28at.com

2.关于parseInt的一些事情

根据 MDN 文档,“parseInt(string, radix) 函数解析字符串参数并返回指定基数(数学数字系统中的基数)的整数。”cfk28资讯网——每日最新资讯28at.com

语法cfk28资讯网——每日最新资讯28at.com

parseInt(string)parseInt(string, radix)

例如:cfk28资讯网——每日最新资讯28at.com

parseInt('0.5') // 0parseInt('0.5') // 0parseInt('0.05') // 0parseInt('0.005') // 0parseInt('0.0005') // 0parseInt('0.00005') // 0parseInt('0.000005') // 0parseInt('015') // 15parseInt('015', 8) // 13parseInt('15px', 10) // 15

3. parseInt如何转换数字?

当parseInt的第一个参数是数字时,它如何解析?cfk28资讯网——每日最新资讯28at.com

parseInt(0.0000005) === 5 的真相也在这里......cfk28资讯网——每日最新资讯28at.com

3.1. 第一步?将数字转换为字符串。

让我们使用 String 函数检查基于字符串的值,看看每个值的输出是什么:cfk28资讯网——每日最新资讯28at.com

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' pay attention here

3.2 第二步是进行舍入操作。

正如用户 SeyyedKhandon 在他的 Stack Overflow 回答中解释的那样:cfk28资讯网——每日最新资讯28at.com

“当我们使用 parseInt(0.0000005) 时,它等于 parseInt('5e-7') 并且基于定义:cfk28资讯网——每日最新资讯28at.com

parseInt 只能将字符串的前导部分解释为整数值;它忽略任何不能解释为整数表示法一部分的代码单元,并且没有给出任何此类代码单元被忽略的指示。cfk28资讯网——每日最新资讯28at.com

parseInt(0.0000005)
parseInt('5e-7') // 5

最后,答案将仅返回 5,因为它是直到非字符 e 为止唯一一个数字字符,因此其余的 e-7 将被丢弃。”cfk28资讯网——每日最新资讯28at.com

4. 如何安全地获取浮点数的整数部分?

建议使用以下 Math.floor() 函数:cfk28资讯网——每日最新资讯28at.com

Math.floor(0.5);      // => 0Math.floor(0.05);     // => 0Math.floor(0.005);    // => 0Math.floor(0.0005);   // => 0Math.floor(0.00005);  // => 0Math.floor(0.000005); // => 0Math.floor(0.0000005); // => 0

5.举一反三

现在,你能解释一下为什么 parseInt(99999999999999999999999999) 等于 1 吗?cfk28资讯网——每日最新资讯28at.com


cfk28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-11864-0.html为什么 JavaScript 的 parseInt(0.0000005) 打印“5”?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 十道Java限流器面试题和答案

下一篇: 关于架构“重构”的要点

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • WebRTC.Net库开发进阶,教你实现屏幕共享和多路复用!

    WebRTC.Net库:让你的应用更亲民友好,实现视频通话无痛接入! 除了基本用法外,还有一些进阶用法可以更好地利用该库。自定义 STUN/TURN 服务器配置WebRTC.Net 默认使用 Google 的
  • 破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    来源 | 电商在线文|易琬玉编辑|斯问受访店铺:Ringdoll戒之人形图源:微博@御座的黄山、“Ringdoll戒之人形”淘宝店铺有关外貌的评价,黄山已经听累了。生于1985年的他,哪
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
  • iQOO Neo8系列今日官宣:首发天玑9200+ 全球安卓最强芯!

    在昨日举行的的联发科新一代旗舰芯片天玑9200+的发布会上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品将全球首发搭载这款当前性能最强大的移动平台
  • OPPO K11搭载高性能石墨散热系统:旗舰同款 性能凉爽释放

    日前OPPO官方宣布,将于7月25日14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼
Top