Number
数值字面量
最基本的数值字面量格式是十进制整数;
整数还可以通过八进制或十六进制的字面值来表示;八进制字面值的第一位必须是零(0),然后是八进制数字序列(0~7)。如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析;
e 表示法,10的指数次幂,
3.125e3
表示3.125*10^3
,3.125e-3
表示3.125*10^-3
;浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数,浮点计算的误差是使用基于 IEEE754 数值的浮点计算的通病,永远不要测试某个特定的浮点数值;
数值范围
ECMAScript 能够表示的最小数值保 存在
Number.MIN_VALUE
中—在大多数浏览器中,这个值是5e-324
;能够表示的最大数值保存在
Number.MAX_VALUE
中—在大多数浏览器中,该值是1.7976931348623157e+308
;超出数值范围的值,将被自动转换成特殊的
Infinity
值。负数会被转换成-Infinity
(负无穷),正数则会被转换成Infinity
(正无穷),Infinity
不能够参与计算;Number.NEGATIVE_INFINITY
和Number.POSITIVE_INFINITY
分别保存-Infinity
和Infinity
;正数除以 0 返回
Infinity
,负数除以 0 返回-Infinity
;isFinite()
函数,检验参数是否位于最小与最大数值之间,返回true/false
;监测和监控极大或极小数值的必要性;
NaN
NaN
的特殊性,用于表示一个本来要返回数值的操作数未返回数值的情况;任何涉及
NaN
的操作(例如NaN/10
)都会返回NaN
;NaN
与任何值都不相等,包括NaN
本身,NaN == NaN; // false
;0 除以 0 才会返回
NaN
;typeof NaN;
返回"number"
;isNaN()
函数,接受一个参数,确定这个参数是否“不是数值”。isNaN()
在接收到一个值之后,会将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"
或Boolean
值。而任何不能被转换为数值的值都会导致这个函数返回true
;
数值转换
Number(),用于任何数据类型,一元加操作符的操作与
Number()
函数相同,转换规则如下:数据类型
Number()结果
Boolean
0 或 1
Null
0
Undefined
NaN
Number
简单的传入和返回
String
空字符串,则将其转换为 0; 只包含数字,则将其转换为十进制数值,忽略前导0; 包含有效的浮点格式,则转换为对应的浮点数值; 包含有效的十六进制格式,则转换为十进制整 数值; 包含除上述格式之外的字符,则转换为 NaN
Object
调用
valueOf()
方法,依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用toString()
方法,然后再次依照前面的规则转换返回的字符串值parseInt(),string => number(整数),会忽略前面的空直至找到第一个非空格字符,
Number()
函数在转换字符串时比较复杂而且不够合理,因此在处理整数的时候更常用的是parseInt()
函数,转换规则如下:数据类型
parseInt()结果
String
空字符串,则将其转换为 NaN; 第一个字符不是数字字符或者负号,转换为 NaN; 如果第一个字符是数字字符,会继续向后解析直到结束或遇见非数字字符 以"0x"开头且后跟数字字符,就会将其当作一个十六进制整数; 以"0"开头且后跟数字字符,则会将其当作一个八进制数;
parseFloat(),string => number(浮点数),与
parseInt()
函数类似,但只解析十进制值,规则如下:数据类型
parseInt()结果
String
空字符串,则将其转换为 NaN; 第一个字符不是数字字符或者负号,转换为 NaN; 如果第一个字符是数字字符,会继续向后解析直到结束或遇见非数字字符 十六进制格式的字符串则始终会被转换成 0; 如果字符串包含的是一个可解析为整数的数
parseFloat()
会返回整数;
Last updated