介绍
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
-0 === +0 // true0 === -0 // true0 === +0 // true+0 // 0-0 // 0
NaN:Not a Number
- 字符串解析成数字出错
5 - 'x' //NaN - 数学函数的运算结果
Math.sqrt(-1) //NaN - 0除以0
0 / 0 //NaN - NaN是数值
typeof NaN // 'number' - NaN不等于任何值
NaN === NaN //false - NaN在布尔运算时被当作false
Boolean(NaN) //false - NaN与任何数(包括它自己)的运算,得到的都是NaN
NaN + 32 //NaN
Infinity
Infinity表示“无穷”,用来表示两种场景。一种是一个正的数值太大,或一个负的数值太小,无法表示;另一种是非0数值除以0,得到Infinity
Math.pow(2, 1024) // Infinity0 / 0 // NaN1 / 0 // InfinityInfinity === -Infinity // false1 / -0 // -Infinity-1 / -0 // Infinity
全局方法
parseInt():用于将字符串转为整数
转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分
如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN。
parseInt(' 81') // 81parseInt('1.23') // 1parseInt('8a') // 8parseInt('12**') // 12parseInt('15px') // 15parseInt('abc') // NaNparseInt('.3') // NaNparseInt('') // NaNparseInt('1000', 2) // 8parseInt('1000', 6) // 216parseInt('1000', 8) // 512parseInt('1000', 10) // 1000parseInt([1,2,3]) //1parseInt({}) //NaN
parseFloat():用于将一个字符串转为浮点数
parseFloat(true) // NaNNumber(true) // 1parseFloat(null) // NaNNumber(null) // 0parseFloat('') // NaNNumber('') // 0parseFloat('123.45#') // 123.45Number('123.45#') // NaN
isNaN():用来判断一个值是否为NaN
isNaN(NaN) // trueisNaN(123) // falseisNaN('Hello') // true// 相当于isNaN(Number('Hello')) // trueisNaN({}) // true// 等同于isNaN(Number({})) // trueisNaN({}) // true//判断NaNfunction myIsNaN(value) {return value !== value;}
isFinite():表示某个值是否为正常的数值
isFinite(Infinity) // falseisFinite(-Infinity) // falseisFinite(NaN) // falseisFinite(undefined) // falseisFinite(null) // trueisFinite(-1) // true
