阅读javascript高级程序设计随笔(三)

2.4.5 Number类型

  进制的书写:

  八进制字面值的第一位必须是0,然后是由0~7的数字组成,如果字面值中的数字超出了范围,那么前导零将被忽略。十六进制字面值的前面两位必须是0x,后面就由(0~9及A~F),字母可以大写,也可以小写。

注意:八进制字面量在严格模式下是无效的,会导致支持的Javascript引擎抛出错误。

 浮点数值计算会产生舍入误差。

  数值范围:

在超出数值的范围时,如果是正数会转换成Infinity,负数就转换成-Infinity.可以使用isFinite()函数。访问Infinity可以使用Number.MAX_VALUE

或者Number.POSITIVE_INFINITY。访问-Infinity可以使用Number.MIN_VALUE或Number.NEGATIVE_INFINITY。

  NaN:

  NaN表示非数值。任何数值除以0会返回NaN。

 任何涉及NaN的操作都会返回NaN。NaN与任何值都不相等,包括NaN本身。

  数值转换:

Number()函数的转换规则如下:

1.如果是Boolean值,true和false将分别被转换为1和0。

2.如果是数字值,只是简单的传人和返回。

3.如果是null值,返回0。

4.如果是undefined,返回NaN。

5.如果是字符串,遵循以下规则:

  5.1 如果字符串只包含数字(包括前面带正号或负号),则将其转换为十进制数值,即"1"变成1,"123"变成123,而"011"会变成          11(注意:前导的零被忽略了);

  5.2如果字符串中包含有效的浮动格式,如"1.1",则将其转换为对应的浮点数值(注意:前导的零被忽略);

  5.3如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值;

  5.4如果字符串是空的(不包含任何字符),则将其转换为0;

  5.5如果字符串中包含除上述格式之外的字符,则将其转换为NaN.

 6.如果是对象,则调用对象的valueof()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。

 parseInt()函数

 parseInt()函数在转换字符串时,它会忽略字符串前面的空格,直到找到第一个非空格字符串。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN。如果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。如"123abc"会转换为123。

注意:Number()对空字符返回0,而parseInt()返回的是NaN。

为了区别parseInt在解析上的困惑。在转换为其他进制,会使用两个参数,第一个参数是需要转换的字符串,第二个参数是字符串里面的数据是多少进制的。

例子:

var num1 = parsetInt("10",2);  //2(按照二进制解析)

var num1 = parsetInt("10",8);  //8(按照二进制解析)

var num1 = parsetInt("10",10);  //10(按照二进制解析)

var num1 = parsetInt("10",16);  //16(按照二进制解析)

 

posted @ 2013-12-30 20:30  Night2013  阅读(166)  评论(0编辑  收藏  举报