​ 前面在看题目的时候 偶然看到 使用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. Angular JS例子 ng-repeat遍历输出

    首先要有Angular的插件:然后才开始遍历 :<!DOCTYPE html> <html lang="en"> <head> <meta ...

  2. 转:HTML中让图片滚动的<marquee>标签的使用方法

    实例: <marquee id="affiche" align="left" behavior="scroll" bgcolor=&q ...

  3. Windows下COCOS2D-X开发环境配置

    1. 下载Android SDK: http://developer.android.com/sdk/index.html ,解压到E:\ADT 目录下 2. 下载NDK: http://develo ...

  4. Java—IO流 文件的编码

    文件的编码 package cn.test; import java.io.UnsupportedEncodingException; public class Demo15 { public sta ...

  5. XPS 13 9360安装ubuntu 18

    XPS 13 9360安装ubuntu 18 标签(空格分隔): Linux 操作系统 1. 雷电口驱动bug 提示更新雷电口驱动bug(thunderbolt nvm for xps noteboo ...

  6. May 21st 2017 Week 21st Sunday

    The smallest deed is better than the greatest intention. 最微小的行动胜过最伟大的打算. Several years ago, just aft ...

  7. jquery.dataTables列中内容居中问题?求解?

    .table > tbody > tr > td {  vertical-align: middle; }

  8. Poj 1961 KMP

    题意:给定一个字符串,求他每一个前缀,如果他是周期的,求len/最短循环节. 分析: 复习一下KMP,之前有详细解析. 由于朴素匹配每次移动一位,KMP可以多移动 f[i] 位,f 就是失配函数,失配 ...

  9. BestCoder Round #81 (div.2)

    HDU:5670~5764 A题: 是一个3进制计数: #include <bits/stdc++.h> using namespace std; ]; int calc(long lon ...

  10. HDU 2586 How far away ?【LCA】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2586 How far away ? Time Limit: 2000/1000 MS (Java/Oth ...