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

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

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

前言

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

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

1. 什么时候使用parseInt?

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

2.关于parseInt的一些事情

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

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

parseInt(string)parseInt(string, radix)

例如:86g28资讯网——每日最新资讯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的第一个参数是数字时,它如何解析?86g28资讯网——每日最新资讯28at.com

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

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

让我们使用 String 函数检查基于字符串的值,看看每个值的输出是什么:86g28资讯网——每日最新资讯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 回答中解释的那样:86g28资讯网——每日最新资讯28at.com

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

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

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

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

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

建议使用以下 Math.floor() 函数:86g28资讯网——每日最新资讯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 吗?86g28资讯网——每日最新资讯28at.com


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

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

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

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

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

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页“充值中心”入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
  • 疑似小米14外观设计图曝光:后置相机模组变化不大

    下半年的大幕已经开启,而谁将成为下半年手机圈的主角就成为了大家关注的焦点,其中被传有望拿下新一代骁龙8 Gen3旗舰芯片的小米14系列更是备受大家瞩
  • iQOO 11S或7月上市:搭载“鸡血版”骁龙8Gen2 史上最强5G Soc

    去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,iQOO 11不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞屏,同时在快充
Top