数值
整数与浮点数
js语言的底层根本没有整数,所有数字都是小数(浮点数)
1与1.0是相同的,是同一个数。
1 === 1.0 // true
由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。
0.1 + 0.2 === 0.3
// false
0.3 / 0.1
// 2.9999999999999996
(0.3 - 0.2) === (0.2 - 0.1)
// false
进制
js对整数提供四种进制的表示方法:十进制、十六进制、八进制、二进制。
- 十进制:没有前导0的数值。
- 八进制:有前缀0o或0O的数值
- 十六进制:有前缀0x或0X的数值。
- 二进制:有前缀0b或0B的数值。
默认情况下,js内部会自动将八进制、十六进制、二进制转为十进制
0xac // 172
0o176 // 126
0b111111 // 63
如果八进制、十六进制、二进制的数值里面,出现不属于该进制的数字,就会报错。
0x1h // 报错
0o79 // 报错
0b16 // 报错
特殊数值(了解)
正零和负零
任何一个数都有一个对应的负值,就连0也不例外。
几乎所有场合,正零和负零都会被当作正常的0
+0 // 0
-0 // 0
-0 === +0 // true
0 === -0 // true
0 === +0 // true
唯一有区别的场合是,+0或-0当作分母,返回的值是不相等的。
(1 / +0) === (1 / -0) // false
之所以出现这样结果,是因为除以正零得到+Infinity,除以负零得到-Infinity,这两者是不相等的。
NaN(了解)
NaN是js的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。
6 - 'a' // NaN
0 / 0 // NaN
NaN的数据类型依然是number
typeof NaN // 'number'
NaN不等于任何值,包括它本身。
NaN === NaN // false
NaN与任何数(包括它自己)的运算,得到的都是NaN。
NaN + 66 // NaN
NaN - 66 // NaN
NaN * 66 // NaN
NaN / 66 // NaN
与数值相关的全局方法
parseInt()
用于将字符串转为整数。
基本用法
转换规则:将参数转换成字符串,去掉空格,只取整数部分,不能转换为数值的会返回NaN
parseInt(' 66') // 66
parseInt(6.23) // 6
// 等同于
parseInt('6.23') // 6
parseInt('126**') // 126
parseInt('12.56') // 12
parseInt('16e2') // 16
parseInt('36px') // 36
parseInt('+9') // 9
parseInt('abc') // NaN
进制转换
parseInt方法还可以接受第二个参数(2到36之间),表示被解析的值的进制,返回该值对应的十进制数。默认情况下,parseInt的第二个参数为10,即默认是十进制转十进制。
parseInt('1000') // 1000
parseInt('1000', 10) // 1000
parseInt('1000', 2) // 8
parseInt('1000', 8) // 512
parseInt('1000', 16) // 4096
parseFloat()
用于将一个字符串转为浮点数(小数)。
转换规则:将参数转换成字符串,去掉空格,只取整数部分,不能转换为数值的会返回NaN
parseFloat('123.65a') // 123.65
parseFloat('a') // NaN