介绍

JavaScript 语言的底层根本没有整数,所有数字都是小数(64位浮点数) 1===1.0 //true
浮点数不是精确的值 0.1+0.2===0.3 //false 0.3/0.1 //2.9999999999999996
精确范围:-2到2
数值范围:2到2

Math.pow(2, 1024) // Infinity Math.pow(2, -1075) //5e-324 Math.pow(2, -1076) //0
Number.MAX_VALUE // 1.7976931348623157e+308
Number.MIN_VALUE // 5e-324

进制

  • 十进制:没有前导0的数值。
  • 八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
  • 十六进制:有前缀0x或0X的数值。
  • 二进制:有前缀0b或0B的数值。

特殊数值

+0 和 -0

几乎所有场合,正零和负零都会被当作正常的0

  1. -0 === +0 // true
  2. 0 === -0 // true
  3. 0 === +0 // true
  4. +0 // 0
  5. -0 // 0

NaN:Not a Number

  1. 字符串解析成数字出错 5 - 'x' //NaN
  2. 数学函数的运算结果 Math.sqrt(-1) //NaN
  3. 0除以0 0 / 0 //NaN
  4. NaN是数值 typeof NaN // 'number'
  5. NaN不等于任何值 NaN === NaN //false
  6. NaN在布尔运算时被当作false Boolean(NaN) //false
  7. NaN与任何数(包括它自己)的运算,得到的都是NaN NaN + 32 //NaN

Infinity

Infinity表示“无穷”,用来表示两种场景。一种是一个正的数值太大,或一个负的数值太小,无法表示;另一种是非0数值除以0,得到Infinity

  1. Math.pow(2, 1024) // Infinity
  2. 0 / 0 // NaN
  3. 1 / 0 // Infinity
  4. Infinity === -Infinity // false
  5. 1 / -0 // -Infinity
  6. -1 / -0 // Infinity

全局方法

parseInt():用于将字符串转为整数
转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分
如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN。

  1. parseInt(' 81') // 81
  2. parseInt('1.23') // 1
  3. parseInt('8a') // 8
  4. parseInt('12**') // 12
  5. parseInt('15px') // 15
  6. parseInt('abc') // NaN
  7. parseInt('.3') // NaN
  8. parseInt('') // NaN
  9. parseInt('1000', 2) // 8
  10. parseInt('1000', 6) // 216
  11. parseInt('1000', 8) // 512
  12. parseInt('1000', 10) // 1000
  13. parseInt([1,2,3]) //1
  14. parseInt({}) //NaN

parseFloat():用于将一个字符串转为浮点数

  1. parseFloat(true) // NaN
  2. Number(true) // 1
  3. parseFloat(null) // NaN
  4. Number(null) // 0
  5. parseFloat('') // NaN
  6. Number('') // 0
  7. parseFloat('123.45#') // 123.45
  8. Number('123.45#') // NaN

isNaN():用来判断一个值是否为NaN

  1. isNaN(NaN) // true
  2. isNaN(123) // false
  3. isNaN('Hello') // true
  4. // 相当于
  5. isNaN(Number('Hello')) // true
  6. isNaN({}) // true
  7. // 等同于
  8. isNaN(Number({})) // true
  9. isNaN({}) // true
  10. //判断NaN
  11. function myIsNaN(value) {
  12. return value !== value;
  13. }

isFinite():表示某个值是否为正常的数值

  1. isFinite(Infinity) // false
  2. isFinite(-Infinity) // false
  3. isFinite(NaN) // false
  4. isFinite(undefined) // false
  5. isFinite(null) // true
  6. isFinite(-1) // true