JavaScript(三)数值类型

整数和浮点数

JavaScript内部存储数字都是按64位浮点类型存储的,无论整数和小数。容易造成混淆的是,某些位运算必须要整数才可以运行,所以会自动将64位浮点数转化为32位整数。再进行位运算。在JavaScript中,1和1.0是一样的

1 == 1.0 true
0.1+0.2 == 0.3 false
0.3/0.1 = 2.99999999996
(0.3-0.2) === (0.2-0.1) false

总之,涉及小数的运算要小心

数值精度

  1. 在JavaScript中,浮点数的64位组成,从最左边开始
    1. 第1位:符号位,0代表整数,1代表负数
    2. 第2位到第12位:指数部分
    3. 第13位到第64位:小数部分(即有效数字)
  2. 一个64位数字在JavaScript中的表示
    (-1)符号位 * 1.xxxxxx小数部分 * 2^指数部分(0-2047)
    其中,符号位有1位,指数部分占11位,小数部分占52位,决定精确度的是52位小数部分,IEEE 754规定,有效数字第一位默认是1,不保存在64位之中,也就是说有效数字的形式为1.xxxxxx,其中xxxxxxxx的部分保存在64位浮点数中,因此,JavaScript能提供的有效数字长度为53个二进制位。
  3. 数值范围

JavaScript能够表示21024到2-1023(开区间),超过这个范围的数将无法表示。如果一个数大于等于2的1024次方,就会发生“正向溢出”,则JavaScript无法表示这么大的数字就会返回Infinity
如果一个数字小于等于2的-1075次方(指数部分最小值-1023,再加上小数部分的52位),那么就会发生为“负向溢出”,会直接返回0.

数值的表示法

JavaScript中的数字可以用数值直接表示例如35(十进制),也可以是0xff(十六进制)。也可以采用科学计数法来表示例如,
123e3
123e-3

数值的进制

  1. 二进制:前缀0b或者0B
  2. 八进制:0o或者0O
  3. 十进制:没有前缀
  4. 十六进制:0x或者0X

特殊数值

NaN

  1. NaN:表示(Not a Number)
    typeof NaN 返回number

  2. NaN不等于任何数值,包括它本身

Intifity

  1. Intifity表示无穷,用来表示两种情况,一种是数值太大,另一种是数值太小,此外,一个非零数除以零返回的也是NaN
  2. Intifity遵循四则运算

与数值相关的全局方法

parseInt

  1. parseInt():将字符串转化为--整数--,如果字符串中有空格会自动删去空格,如果不是字符串会先转化为字符串
  2. 转化的时候会从第一个字符开始转化,如果转化过程中转化不下去,会返回已经转化好的部分
  3. 如果第一个字符串不是数字,无法转化则会直接返回NaN
  4. 不支持科学计数法
  5. 如果以0x开头,会自动按照十六进制转化
  6. 进制转化:parseInt默认第二个参数是10,即转化成十进制数,此外还可以传其他整数,这个数必须是2到36之间,才有意义,否则会返回NaN,如果第二个参数是null或者undefined则直接忽略。

parseFloat

  1. 用于将一个字符串转化为浮点数
  2. 支持科学计数法

isNaN

  1. 可以判断传入的参数是否是NaN,这个方法只对数值有效。
  2. 使用isNaN时最好判断一下类型
  3. 因为NaN是唯一不等于自身的值这个特点,判断是否为NaN的最可靠的方法是return value !=== value

isFinite

  1. isFinite返回一个Boolean类型的值,用来判断某个值是否为正常的数值
isFinite(Infinity) // false
isFinite(-Infinity) // false
isFinite(NaN) // false
isFinite(undefined) // false
原文地址:https://www.cnblogs.com/charlottepl/p/13739117.html