iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >parseInt()函数异常行为是什么原因
  • 796
分享到

parseInt()函数异常行为是什么原因

2023-07-06 13:07:35 796人浏览 安东尼
摘要

今天小编给大家分享的是parseInt()函数异常行为是什么原因,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。正文parseInt()是内置的 js 函数,用于解析数字字符串中的整数

今天小编给大家分享的是parseInt()函数异常行为是什么原因,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

正文

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

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

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

parseInt(numericalString, radix)还接受第二个参数:从 2 到 36,表示字符串的基数。例如指定 16 表示被解析值是十六进制数。请注意,10 不是默认值,最常见的是 2、8、10 和 16。

例如我们使用 parseInt 以二进制方式解析数字字符串:

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

100 对应的二进制数是 4,所以返回 4。

1. parseInt() 的怪异行为

parseInt(numericalString)始终将其第一个参数转换为字符串(如果不是字符串),然后将该数字字符串解析为整数值。

这就是为什么你可以(但不应该)使用parseInt()提取浮点数的整数部分的原因:

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

提取浮点数的整数部分,如0.50.05等,结果为0, 这和预期的一样。

那提取0.0000005的整数部分怎么样?

parseInt(0.0000005); // => 5

parseInt() 将浮点数 0.0000005 解析为 5。为什么 parseInt(0.0000005) 有这样一个怪异的行为?

2.解决parseInt()怪异行为

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

这可能是第一个线索。

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

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'

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

这是第二个重要的线索!

当指数符号被解析为整数时,我们会得到数字5

parseInt(0.0000005); // => 5// same asparseInt(5e-7);      // => 5// same asparseInt('5e-7');    // => 5

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

谜团已揭开! 因为 parseInt() 始终将其第一个参数转换为字符串,所以小于10负6次方的浮点数将以指数表示。 然后 parseInt() 从 float 的指数表示法中提取整数。

另外,为了安全地提取浮点数的整数部分,建议使用 Math.floor() 函数:

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

3.总结

parseInt() 是将数字字符串解析为整数的函数。

尝试使用parseInt()提取浮点数的整数部分时必须小心。

小于10的-6次方 (例如0.0000005,也就是5*10-7)的浮点数转换成字符串时被写成指数表示法(例如5e-7是0.0000005的指数表示法)。这就是为什么在 parseInt() 中使用这么小的浮点数会导致意想不到的结果:只有指数表记的重要部分(例如 5e-7 中的 5)会被解析。

那么现在大家可以试着解释为什么 parseInt(999999999999999999999)等于1?

代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。

关于parseInt()函数异常行为是什么原因就分享到这里了,希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

--结束END--

本文标题: parseInt()函数异常行为是什么原因

本文链接: https://www.lsjlt.com/news/358565.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • parseInt()函数异常行为是什么原因
    今天小编给大家分享的是parseInt()函数异常行为是什么原因,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。正文parseInt()是内置的 JS 函数,用于解析数字字符串中的整数...
    99+
    2023-07-06
  • 一文搞懂 parseInt()函数异常行为
    目录正文1. parseInt() 的怪异行为2.解决parseInt()怪异行为3.总结正文 parseInt()是内置的 JS 函数,用于解析数字字符串中的整数。 例如,解析数字...
    99+
    2023-05-20
    parseInt()函数 parseInt()函数异常
  • 空指针异常的原因是什么
    空指针异常的原因有:1、未初始化引用,在使用该引用前没有对其进行初始化操作,就会抛出空指针异常;2、对象未被正确实例化,如果对象没有被正确实例化,尝试访问其成员也会导致空指针异常;3、引用被显示赋值为null,在这种情况下试图访问该引用的成...
    99+
    2023-12-14
    空指针异常
  • 网络连接异常是什么原因
    网络连接异常的原因:1、设备未连接网络;2、路由器设置有问题;3、路由器故障;4、网线线路;5、服务器中断;6、设备系统问题;7、设备硬件故障;8、网络信号不好;9、手机系统网络设置混乱;10、手机运行程序过多;11、手机软件有问题。本教程...
    99+
    2023-07-10
  • JavaScript parseInt()函数的用法是什么
    JavaScript中的parseInt()函数用于将字符串转换为整数。它接受两个参数:要转换的字符串和一个可选的基数(表示要解析的...
    99+
    2023-10-11
    JavaScript
  • cdn网络异常什么原因
    cdn网络异常的原因一般是:cdn节点被大量的DDoS或CC攻击。cdn服务器网络间接性的故障。cdn服务商所提供的节点分布有限或不均衡。数据传输过程中,网络出现网络拥堵或发生故障。本地网络处于不良状态下。...
    99+
    2024-04-02
  • Oracle中JOB异常中断的原因是什么
    今天就跟大家聊聊有关Oracle中JOB异常中断的原因是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JOB 信息:参数:BROKEN &nbs...
    99+
    2024-04-02
  • dubbo将异常转换成RuntimeException的原因是什么
    本篇内容主要讲解“dubbo将异常转换成RuntimeException的原因是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“dubbo将异常转换成RuntimeException的原因是什...
    99+
    2023-07-05
  • $_FILES数组为空的原因是什么
    这篇文章给大家分享的是有关$_FILES数组为空的原因是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。做上传的文件时候,打印$_files总是为空,查阅了下资料。发现是 ma...
    99+
    2024-04-02
  • 香港阿里云服务器异常原因是什么
    阿里云是一家知名的云计算服务提供商,为企业和个人提供云计算基础设施和应用程序服务。其主要服务包括计算、存储、网络、安全等方面的解决方案,可以帮助用户构建和管理高效、稳定的云计算平台。 然而,阿里云服务器的故障和问题并不是个例,这通常是由于...
    99+
    2023-10-28
    阿里 香港 异常
  • C#访问null字段会抛异常的原因是什么
    这篇文章主要介绍“C#访问null字段会抛异常的原因是什么”,在日常操作中,相信很多人在C#访问null字段会抛异常的原因是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#访问null字段会抛异常的原因...
    99+
    2023-07-02
  • Python没有main函数的原因是什么
    为什么必须强制main函数作为入口?这些语言都是编译语言,需要将代码编译成可执行的二进制文件。为了让操作系统/引导程序找到程序的开头,需要定义这样一个函数。简而言之,需要在大量可执行的代码中定义一个至关重要的的开头。不难看出,对于这些语言来...
    99+
    2023-05-14
    Python main
  • 服务器无法正常运行的原因是什么
    服务器无法正常运行的原因可能有很多种,以下是一些常见的原因: 1.硬件故障:服务器的硬件部件(如CPU、内存、硬盘等)出现故障可能导...
    99+
    2024-04-22
    服务器
  • mysql_query()函数执行失败的原因及解决方法是什么
    mysql_query()函数执行失败的原因和解决方法可能有以下几种:1. 连接数据库失败:如果连接数据库失败,可以检查数据库服务器...
    99+
    2023-08-08
    mysql_query()
  • Spring Boot集成Druid出现异常报错的原因是什么
    这篇文章主要介绍Spring Boot集成Druid出现异常报错的原因是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Spring Boot集成Druid异常在Spring Boot集成Druid项目中,发现错误...
    99+
    2023-06-15
  • 微信运动步数为0是什么原因
    微信运动步数为0是因为手机设置问题、长时间不活动、软件故障或网络问题和自身的原因造成的。详情介绍:1、手机设置问题,打开手机的设置,进入“隐私”选项,确保微信运动的权限是打开的;2、长时间不活动,尝试定期活动一下手机,或者将手机放在身上的其...
    99+
    2023-08-16
  • 香港阿里云服务器异常原因是什么意思
    首先,阿里云服务器在连接到互联网的时候可能会遇到连接超时或者网络中断等问题,这些问题可能导致服务器无法正常连接到互联网。此外,如果服务器在维护期间出现了网络故障,例如网络带宽不足或者网络拥塞等,也可能导致服务器无法正常连接到互联网。 除了...
    99+
    2023-10-28
    阿里 香港 异常
  • javascript用函数式编程的原因是什么
    这篇“javascript用函数式编程的原因是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • Python中没有main函数的原因是什么
    Python中没有main函数的原因是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为什么必须强制执行主函数这些语言是已编译的语言,需要将代码编译到可执行的二进制文件中,以...
    99+
    2023-06-16
  • react推荐函数组件的原因是什么
    这篇文章主要讲解了“react推荐函数组件的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“react推荐函数组件的原因是什么”吧!原因:1、函数组件语法更短、更简单,这使得它更容易...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作