数据类型
在JavaScript中有6种原始数据类型:Undefined、Null、Boolean、Number、String、Symbol(ES6添加的),以及1种复杂数据类型:Object。
今天我们就来详细讲讲Number数据类型:
Number数据类型
Number类型最基本的数值字面量格式就是十进制整数:
let number = 55;
整数也可以使用八进制或十六进制字面量表示,对于八进制字面量第一个数字必须是0,然后是对应的八进制数字;十六进制则是在加上数字前缀0x,然后是十六进制数字。
浮点值
由于存储浮点值使用的内存空间时存储整数值的两倍,所以ECMAScript总是会想方设法把值转换为整数,在小数点后没有数字的情况下,数值就会变成整数。
对于特别大或特别小的数值,可以使用科学记数法表示:
数值后面加e再加上要乘的10的多少次幂
注:永远不要测试某个特定的浮点值,如测试0.1+0.2是否等于0.3
值的范围
- 使用Number.MIN_VALUE/Number.MAX_VALUE可以查看ECMAScript可以表示的最小值/最大值
- 使用isFinite()函数可以确定一个值是否为有限大
NaN
NaN意思是“不是数值”,用于表示本来要返回的数值操作失败了(而不是抛出错误)。
- 0、+0、-0相除都会返回NaN
- 如果分子是非0值,分母是有符号0或无符号0,会返回Infinity或-Infinity
独有属性
- 任何涉及NaN的操作始终返回NaN。
- NaN不等于包括NaN在内的任何值。
- isNaN()函数可以判断一个值是否“不是数值”,其他类型的值会直接转换为数值。任何不能转换为数值的值都会导致这个函数返回true。
数值转换
Number():
- 布尔值:true返回1、false返回0
- 数值直接返回
- null返回0
- undefined返回NaN
- 字符串:
- 字符串包含数值字符,则转换为一个十进制值
- 字符串包含有效的浮点值格式,则转换为相应的浮点值
- 字符串包含有效的十六进制,则转换为与该十六进制对应的十进制整数
- 字符串为空字符串,则返回0
- 字符串包含其他情况的字符则返回0
6.对象:调用Valueof()方法,并按照上述规则返回值。如果转换结果是NaN,则调用toString() 方法,再按照转换字符串的规则转换。
parseInt():
parseInt()也可以得到整数,它更专注于字符串中是否包含数值模式,会从字符串第一个非空格字符开始转换,如果不是数值字符、加号或减号则返回NaN,如果是数值符号、加号或减号则继续依次检测每个字符直到字符串末尾,或遇到非数值字符。
parseInt()可以识别不同进制的整数格式,也可以接收第二个参数指定进制数。
parsFloat():
parsFloat()函数的工作方式与parseInt()类似,都是从位置0开始检测每个字符,解析到字符串末尾或者解析到一个无效的浮点数值字符为止,这意味着第一次出现的小数点是有效的但第二次出现的小数点是无效的,此时字符串中剩余字符都会被忽略。
注:parseInt()只解析十进制值,因此不能指定底数。