Number

来源:互联网 发布:英魂之刃刷点卷软件 编辑:程序博客网 时间:2024/05/20 16:43

Number类型采用IEEE754格式来表示整数和浮点数。

整数

最常用的是十进制,也可以通过八进制和十六进制来表示整数。
八进制字面值第一位必须是0,然后是八进制数字序列(0~7)。如果字面值中的数值超过了范围,那么前导零将会被忽略,后面的数值将会被当作十进制解析。

var num1 = 012;     // 八进制的10var num2 = 019;     // 无效的八进制数值,解析为19

八进制在严格模式下是无效的,会导致JavaScript引擎抛出聘错误。

浮点数

必须包含一个小数点,并且小数点后面必须至少有一位数字。
小数点前面可以没有数字,但不推荐这种写法。
小数点后没有跟任何数字,则会被解析为整数。
如果浮点数本身就是一个整数,那么将会被转换成整数。

var num3 = 1.;      // 小数点后没有数字,解析为1var num4 = 10.0;    // 解析为10

永远不要测试浮点数的值!

数值范围

最小数值:Number.MIN_VALUE——5e-324
最大数值:Number.MAX_VALUE
如果某次计算得到走出范围的值,那么这个值将被自动转换成特殊的Infinity值(负数则为-Infinity)。
Infinity是不能参与计算的数值,所以某次计算得到Infinity值,那么该值将无法参与下一次的计算。
使用isFinite()函数来判断一个数值是不是有穷的。

NaN

Not a Number,非数值,是一个特殊的数值。
任何数除以0,会得到正无穷大或负无穷大。
特点:
1. 任何涉及NaN的操作都会返回NaN
2. NaN与任何值都不相等,包括NaN本身

isNaN函数

任何不能转换成数值的值都会导致这个函数返回true。

isNaN(true);    // falsetrue可以被转换成1

数值转换

有三个函数可以把非数值转换成数值:
- Number():可以用于任何类型
- parseInt():仅用于转换字符串
- parseFloat():仅用于转换字符串

Number()函数的转换规则:
- true => 1,false => 0
- 数字值则直接返回
- null => 0
- undefined => NaN
- 字符串:只包含数字,则转换为十进制数;如果是有效的浮点格式,则转换为浮点数;如果是有效的十六进制格式,则转换为等同的十进制数;如果是空字符串,则转换为0;如果包含除上述格式之外的字符,则转换为NaN
- 对象:先调用valueOf函数,按照前面的规则转换返回的值;如果返回NaN,则调用toString函数,再按照前面的规则转换返回的字符串

注:一元加操作符与Number函数相同

parseInt()函数的转换规则:
- 忽略前面的空格,找到第一个非空格字符,若不是数字字符或者负号,则返回NaN;
- 空字符串会返回NaN;
- 如果第一个字符是数字字符,则会继续解析,直到解析完所有字符,或者遇到非数字字符
- 如果第一个字符是数字字符,还能识别出各种整数格式:以0开头的八进制和0x开头的十六进制。但是ECMAScript 3可以解析八进制,ECMAScript 5引擎中,parseInt函数已经不具有解析八进制的能力,而得到十进制数。

可以为parseInt函数提供第二个参数:转换时使用的基数,即多少进制。如果指定了16为基数,则可以省略前导的0x。

var num = parseInt("AF", 16);   // 175var num2 = parseInt("AF");      // NaNvar num3 = parseInt("10", 2);   // 2var num5 = parseInt("10", 8);   // 8var num5 = parseInt("10", 10);  // 10var num6 = parseInt("10", 16);  // 16

建议什么情况下都明确指定基数。
==待确认:var num = parseInt(‘070’);在ECMAScript 3和5下,到底返回什么值?==
parseFloat()函数与parseInt类似:
* 第一个小数点是有效的,之后的小数点是无效的,因此后面的字符串将被忽略;
* parseFloat始终忽略前导的0;
* 十六进制的字符串始终会被转换成0;
* 只解析10进制值,因此没有用第二个参数指定基数的用法;
* 如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后都是0),则返回整数

var num = parseFloat('..2');    // NaN
0 0
原创粉丝点击