​ 前面在看题目的时候 偶然看到 使用parseInt 来进行整数判断 但是这里的parseInt是错误示范

之后了解了一下 发现这和函数 很有研究

先看看 w3c怎么说这个的

parseInt() 函数可解析一个字符串,并返回一个整数。
string 必需。要被解析的字符串。
radix
可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。 如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

说实话 虽然我没有比较好的描述,但是觉的他的解释并不好 看不懂

我们来看看当没有 radix这个参数的时候 parseInt()是如何解析的

如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数

如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。

如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

以及注意事项

注释:只有字符串中的第一个数字会被返回。

注释:开头和结尾的空格是允许的。

提示:如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。

实例

parseInt('12',10)    //10
parseInt(11,2,10) //3 只解析前两位 这里将 11 转化为2禁止 也就是 0011 也就是 3
parseInt( 11 ,2) //3 空格不影响结果
parseInt("dasas",2) // NaN 运算发生错误

接下来让我们看看 为什么 parseInt不适合判断是否整数

parseInt(0.000001, 10)    // 0
parseInt(0.0000001, 10) //1 为什么会是1 !
parseInt(10000000000000,10) //10000000000000
parseInt(10000000000000000000000000000,10) // 1

因为 0.0000001 会被科学计算转化为1e-7 于是parseInt就进行识别 1 认识 e不认识 返回 10进制的1 结果为 1

10000000000000000000000000000 => 1e+28 所以为1

所有 这里数字过小 过大就不再适合 使用parseInt来进行判断

拓展

console.log(parseInt(1/0,19))      //18
console.log(parseInt(false,16)) //250
console.log(parseInt(parseInt,16)) //15
console.log(parseInt('0x10')) //16
console.log(parseInt('10',2)) //2

这是我在别人博客看到的 这些都会了 parseInt就没问题了

解释

console.log(parseInt(1/0,19))

首先计算 1/0 多少 控制台输出 Infinity 代码就变成了

parseInt("Infinity",19)

19进制 ( 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i )

进行解析 I 存在 19进制 解析为18 n不存在 直接返回 所以 = 18

console.log(parseInt(false,16))

18进制 (0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f)

false parseInt不认识 于是 逐个解析

f 存在 a 存在 l不认识返回 16进制的fa = > 10进制的 250

console.log(parseInt(parseInt,16))

和上面同理 parseInt被解析成为字符串

console.log(parseInt('0x10'))

没有第二参数 默认 10进制 0x 表示 16进制 0x10为 10 10进制为 => 16

console.log(parseInt('10',2))

10 二进制 解析 => 2

关于parseInt的看法的更多相关文章

  1. Integer.parseInt 引发的血案

    Integer.parseInt 处理一个空字符串, 结果出错了, 程序没有注意到,搞了很久, 引发了血案啊!! 最后,终于 观察到了, 最后的部分: Caused by: java.lang.NoC ...

  2. parseInt实例详解

    parseInt() 函数可解析一个字符串,并返回一个整数. parseInt(string, radix) 参数 描述 string 必需.要被解析的字符串. radix 可选.表示要解析的数字的基 ...

  3. JavaScript 中 Number()、parseInt()、parseFloat()的区别

    Number(): 概述:Number 对象由 Number() 构造器创建,是经过封装的能让你处理数字值的对象.在非构造器上下文中 (如:没有 new 操作符),Number 能被用来执行类型转换. ...

  4. 从业十余年谈谈对dotnet看法与坚持

    前言 园子经常在讨论关于.Net发展的问题,我也这些年在工作乃至创业过程中使用.Net碰到的一些问题和看法.个人擅长的技术面,C/C++/MFC/STL.ASM.JAVA.VB.Javascript/ ...

  5. 第一章-第十五题(谈谈你对压力的看法,以及怎么和别人合作, 帮助别人,把压力转化为动力,在互相帮助的环境中成长。)--By林培文

    压力是一把双刃剑,有害也有利,重点是如何看待压力,从而做到趋利避害,化压力为动力.对于当前的我来说,压力利大于弊.形成这一想法,我经历了好几个阶段.第一个阶段是小学时代,那会整天就知道玩,也没什么压力 ...

  6. Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么?

    Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么? Integer.valueof(String s)是将一个包装类是将一个实际 ...

  7. ["1", "2", "3"].map(parseInt)?

    ["1", "2", "3"].map(parseInt)得到什么? 答案是:[1, NaN, NaN]. 原因:parseInt接收的是两 ...

  8. js parseInt和map函数

    今天看了一个js的题目["1","2","3"].map(parseInt),看到后脑海中浮现的答案是[1,2,3],但是看到正确答案后蒙了 ...

  9. IE8的parseInt

    踩到一个IE8的parseInt的坑: Chrome:

随机推荐

  1. 图解JavaScript中的原型链

    转自:http://www.jianshu.com/p/a81692ad5b5d typeof obj 和 obj instanceof Type 在JavaScript中,我们经常用typeof o ...

  2. all-to-mqtt

  3. Eclipse org.eclipse.compare plug-in

    Plug-in metedata tell eclipse runtime kernel how to create a expected object and set its perperties, ...

  4. js 常用排序整理

    排序: 1. 内部排序: (1). 交换排序: 1). 冒泡排序 稳定 一次比较相邻两个元素的大小,顺序错误的,将其位置互换 (从高位到低位 或者 从低位到高位) 初始版: var array = [ ...

  5. 使用版本 1.0.0 的 Azure ARM SDK for Java 创建虚拟机时报错

    问题描述 我们可以通过使用 Azure ARM SDK 来管理 Azure 上的资源,因此我们也可以通过 SDK 来创建 ARM 类型的虚拟机,当我们使用 1.0.0 版本的 Azure SDK fo ...

  6. June 07th 2017 Week 23rd Wednesday

    Failure is the condiment that gives success its flavor. 失败是让成功变美味的调味料. There are kinds of flavors in ...

  7. 48. Rotate Image (matrix retation, transpose) Amazon problem

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

  8. CFS调度分析(内核版本:2.6.34)

    CFS调度分析(内核版本:2.6.34) 1.时间记账 CFS不再有时间片的概念,他维护的是每个进程运行的时间记账 使用调度器实体结构来追踪进程运行记账: <linux/sched.h> ...

  9. 一篇博客:分类模型的 Loss 为什么使用 cross entropy 而不是 classification error 或 squared error

    https://zhuanlan.zhihu.com/p/26268559 分类问题的目标变量是离散的,而回归是连续的数值. 分类问题,都用 onehot + cross entropy traini ...

  10. linux学习(一)开始

    第一关 用u盘安装ubuntu, 大部份工作制作的安装U盘会失败,使用Win32DiskImager就行了,这个工具需要手动填写完整iso路径. 第二个问题 装完后发现乱码,连英文都乱码,不知道原因, ...