parseInt(0.0000005)大于等于5

news2025/1/19 11:04:47

文章目录

  • 一、前言
  • 二、`parseInt()`的神秘行为
  • 三、解决`parseInt()`的奥秘
  • 四、结论
  • 五、最后

一、前言

parseInt()JavaScript 的内置函数,用于解析数字字符串中的整数。例如,从数字字符串中解析整数100

const number = parseInt('100');
number; // 100

如预期的那样,'100' 将被解析为 100

parseInt(numericalString, radix) 还接受第二个参数 radixradix2-36之间的整数,表示被解析字符串的基数,最常见的是2、8、10 和 16,默认为 10,也就是十进制。

让我们使用parseInt()解析基数2中的数字字符串:

const number = parseInt('100', 2);
number; // 4

parseInt('100', 2) 解析'100' 为以 2 为基数的整数:因此,它返回值4(十进制)。

二、parseInt()的神秘行为

parseInt(numericalString) 的第一个参数如果不是字符串,将执行 toString 操作将其转换为字符串,然后再将该字符串解析为整数值。

parseInt(0.5);      // => 0
parseInt(0.05);     // => 0
parseInt(0.005);    // => 0
parseInt(0.0005);   // => 0
parseInt(0.00005);  // => 0
parseInt(0.000005); // => 0

提取 float 之类的整数部分,例如 0.50.05 结果为0,这将按照我们预期的工作。

但提取 0.0000005 的整数部分呢?

parseInt(0.0000005); // => 5

parseInt()float 解析 0.0000005… 5,有趣而又让人意外…

为什么 parseInt(0.0000005) 会有这样的神秘行为?

三、解决parseInt()的奥秘

让我们再次看一下 parseInt(numericalString) 第一个参数的作用:如果它不是字符串,则将其转换为字符串,然后进行解析,并返回解析后的整数。

然后让我们尝试将浮点数手动转换为字符串表示形式:

String(0.5);      // => '0.5'
String(0.05);     // => '0.05'
String(0.005);    // => '0.05'
String(0.0005);   // => '0.005' 
String(0.00005);  // => '0.00005'
String(0.000005); // => '0.000005'

String(0.0000005); // => '5e-7'

显式转换为字符串的String(0.0000005)行为与其他浮点数不同:它是指数表示法的字符串表示形式!

第二个线索,当采用指数表示法解析为整数时,您将得到数字5

parseInt(0.0000005); // => 5
// 类似于
parseInt(5e-7);      // => 5
// 类似于
parseInt('5e-7');    // => 5

parseInt('5e-7')考虑到第一个数字5,但跳过e-7

因为parseInt()总是将其第一个参数转换为字符串,所以小于10 -6的浮点数将以指数表示法编写。然后parseInt()float的指数表示法中提取整数!

附带说明一下,为了安全地提取浮点数的整数部分,建议使用以下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

四、结论

parseInt() 是将数字字符串解析为整数的函数,尝试提取浮点数的整数部分时必须小心使用 parseInt(),防止出现意想不到的结果。

五、最后

本人每篇文章都是一字一句码出来,希望对大家有所帮助,多提提意见。顺手来个三连击,点赞👍收藏💖关注✨,一起加油☕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1331066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Netty-3-封帧

实际上,数据的封帧与解帧本身虽然实现起来十分简单,但它们在本质上仍然是数据的一种编解码。 那么它们相比之前介绍的数据编解码有什么区别呢?单从编码目标看,之前介绍的数据编解码是为了对用户的数据对象进行传输。 封帧与解帧则…

【Linux】编辑、查看和搜索文件

大多数 Linux 发行版不包含真正的 vi;而是自带一款高级替代版本,叫做 vim(它是“vi improved”的简写)由 Bram Moolenaar 开发的,vim 相对于传统的 Unix vi 来说,取得了实质性进步。 启动和退出 vim 使用vim可以启动,如命令行输…

MyBatis 通过 SqlSession 实现动态Entity批量插入

需要几个关键点: 1、entity对应的service需要继承BaseService 2、entity对应的serviceImpl需要实现baseMapper方法,需要把当前的mapper返回去 3、entity对应的Mapper需要BaseMapper

快速安装方式安装开源OpenSIPS和CP控制界面

OpenSIPS是目前世界上主流的两个SIP软交换引擎(其中另外一个是kamailio)或者SIP信令服务器(个人认为是比较正确的称谓)。关于Opensips的基础和一些参数配置和安装方式笔者在很久以前的历史文档中有非常多的介绍。最近,很多用户使用OpenSIPS软…

PHP案例代码:PHP如何提供下载功能?

对Web开发人员来说,“下载”功能是一个非常常见的需求。在网站中提供文件下载,通常用于提供用户手册、软件升级、音乐、视频等各种资源文件。本教程将向您介绍如何实现一个PHP下载功能,同时告诉浏览器文件名称、文件大小、文件类型,并统计下载次数。 首先,我们需要了解一些…

蓝牙物联网在智能家居中的应用前景

物联网智能家居系统是应用物联网技术,在传统家居环境下将各种零散无序的电器整合成统一整体,实现家电的全程自动控制,满足用户高效管理需求的一种新型家居模式。 其主要的子系统有家居感知系统、家庭网络系统、智能家居控制管理系统等&#x…

Hadoop入门学习笔记——七、Hive语法

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 七、Hive语法7.1. 数据库相关操作7.1.1. 创建数据库7.1.2…

Python之zip函数相关介绍

python3的zip函数 zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象。 这个可迭代对象可以使用循环的方式列出其元素,若多个可迭代对象的长度不一致,则所返回的列表与长度最短的可迭…

WPF中使用DataGrid封装组合控件TreeView+DataGrid

(关注博主后,在“粉丝专栏”,可免费阅读此文) wpf的功能非常强大,很多控件都是原生的,但是要使用TreeViewDataGrid的组合,就需要我们自己去封装实现。 我们需要的效果如图所示&#x…

汽车品牌官网建设的效果如何

汽车、电动摩托车、自行车等是人们常用的出行工具,头部品牌不少,中小品牌也同样很多,在当今激烈竞争的市场,各商家都希望不断拓客寻求销量增长。由于市场产品同质化严重且无突出特色,加之选择性广,因此在实…

华为鸿蒙应用--封装数据持久化工具:首选项Preferences(鸿蒙工具)-ArkTs

一、使用方法: 0、初始化实例:一般在EntryAbility.ts的onWindowStageCreate中初始化;(可忽略) 1、将数据写入Preferences实例 function() {let arrayNum: number[] [1, 2, 3];let arrayStr: string[] ["5&quo…

vue3项目 - 使用 pnpm 包管理器来创建项目

创建项目 npm install -g pnpm pnpm create vue 输入项目名称、包名称、选择要安装的依赖,最后 pnpm install pnpm format #规范格式 pnpm dev #启动项目

深度学习 | 常见问题及对策(过拟合、欠拟合、正则化)

1、训练常见问题 1.1、模型架构设计 关于隐藏层的一个万能近似定理: Universal Approximation Theorem:一个具有足够多的隐藏节点的多层前馈神经网络,可以逼近任意连续的函数。(Cybenko, 1989)—— 必须包含至少一种有…

mysql自增序列 关于mysql线程安全 独享内存 溢出 分析

1 MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。 相对其他数据库而言,MySQL的锁机制比较简单&#xff0c…

C++中的内存锁定

内存锁定(memory locking)是确保进程保留在主内存中并且免于分页的一种方法。在实时环境中,系统必须能够保证将进程锁定在内存中,以减少数据访问、指令获取、进程之间的缓冲区传递等的延迟。锁定内存中进程的地址空间有助于确保应用程序的响应时间满足实…

二维码初体验 com.google.zxing 实现

文章目录 一、概述二、实现效果1. 完整版本2. 简化版本 三、源码结构四、完整代码 一、概述 Java 操作二维码的开源项目很多,如 SwetakeQRCode、BarCode4j、Zxing 等,这边以Zxing 为例进行介绍。 二、实现效果 1. 完整版本 选择需要生成QR原始文件&a…

大模型工具_awesome-chatgpt-prompts-zh

https://github.com/PlexPt/awesome-chatgpt-prompts-zh 1 功能 整体功能,想解决什么问题 ChatGPT 中文调教指南:提供一些常用的使用场景及对应的 Prompt 提示 当前解决了什么问题,哪些问题解决不了 针对想解决实际问题,但不知道…

图像识别中的 Vision Transformers (ViT)

引言 Vision Transformers (ViT) 最近已成为卷积神经网络(CNN) 的竞争替代品,而卷积神经网络 (CNN) 目前在不同的图像识别计算机视觉任务中处于最先进的水平。ViT 模型在计算效率和准确性方面比当前最先进的 (CNN) 模型高出近 4 倍。 Transformer 模型已成为自然语…

Diffusion扩散模型学习:图片高斯加噪

高斯分布即正态分布;图片高斯加噪即把图片矩阵每个值和一个高斯分布的矩阵上的对应值相加 1、高斯分布 np.random.normal 一维: import numpy as np import matplotlib.pyplot as pltdef generate_gaussian_noise(mean, std_dev, size):noise np.ran…

小白入门之安装NodeJS

重生之我在大四学JAVA 第五章 安装NodeJS 如果你在购买我闲鱼的程序,请尽量使用node14版本 修改安装路径 接着傻瓜式NEXT 测试是否安装成功 如果上面没提示版本号,就按照前两章配置环境变量步骤配置下环境变量 设置镜像地址 npm config set re…