在javascript语言中,Number用来表示数值类型。
创建Number对象的语法:
当 Number() 和运算符 new 一起作为构造函数使用时,它返回一个新创建的 Number 对象。如果不用 new 运算符,把 Number() 作为一个函数来调用,它将把自己的参数转换成一个原始的数值,并且返回这个值(如果转换失败,则返回 NaN)。
一,Number 对象
在 JavaScript 中,数字是一种基本的数据类型。JavaScript 还支持 Number 对象,该对象是原始数值的包装对象。
在必要时,JavaScript 会自动地在原始数据和对象之间转换。
在 JavaScript 1.1 中,可以用构造函数 Number() 明确地创建一个 Number 对象,尽管这样做并没有什么必要。
构造函数 Number() 可以不与运算符 new 一起使用,而直接作为转化函数来使用。
以这种方式调用 Number() 时,它会把自己的参数转化成一个数字,然后返回转换后的原始数值(或 NaN)。
构造函数通常还用作 5 个有用的数字常量的占位符,这 5 个有用的数字常量分别是可表示的最大数、可表示的最小数、正无穷大、负无穷大和特殊的 NaN 值。
注意,这些值是构造函数 Number() 自身的属性,而不是单独的某个 Number 对象的属性。
比如这样使用属性 MAX_VALUE 是正确的:
var big = Number.MAX_VALUE
以下则是错误的:
var n = new Number(2);
var big = n.MAX_VALUE;
作为比较,看一下 toString() 和 Number 对象的其它方法,它们是每个 Number 对象的方法,而不是 Number() 构造函数的方法。
前面提到过,在必要时,JavaScript 会自动地把原始数值转化成 Number 对象,调用 Number 方法的既可以是 Number 对象,也可以是原始数字值。
例如:
二,Number 对象的属性
下面是常用的Number对象的属性。
MAX_VALUE
静态属性,表示数字的最大值,它的近似值为 1.7976931348623157 x 10308。直接使用Number.MAX_VALUE调用。
MIN_VALUE
静态属性,表示数字的最小值,接近 0 ,但不是负数,它的近似值为 5 x 10-324。直接使用Number.MIN_VALUE。
NaN
静态属性,Not a Number的缩写,NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。直接使用 NaN 或者 Number.NaN。
Number.NaN 是一个特殊值,说明某些算术运算(如求负数的平方根)的结果不是数字。方法 parseInt() 和 parseFloat() 在不能解析指定的字符串时就返回这个值。对于一些常规情况下返回有效数字的函数,也可以采用这种方法,用 Number.NaN 说明它的错误情况。
JavaScript 以 NaN 的形式输出 Number.NaN。请注意,NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内。因此,不能与 Number.NaN 比较来检测一个值是不是数字,而只能调用 isNaN() 来比较。
POSITIVE_INFINITY
静态属性,表示大于 Number.MAX_VALUE 的值,代表正无穷大。
Number.POSITIVE_INFINITY 是一个特殊值,它在算术运算或函数生成一个比 JavaScript 能表示的最大的数还大的数(也就是比 Number.MAX_VALUE 还大的数)时返回。
JavaScript 显示 POSITIVE_INFINITY 时使用的是 Infinity。这个值的算术行为和无穷大非常相似。
例如,任何数乘无穷大结果仍为无穷大,任何数被无穷大除的结果为 0。
在 ECMAScript v1 和其后的版本中,还可以用 Infinity 代替 Number.POSITIVE_INFINITY。
NEGATIVE_INFINITY
静态属性,表示小于 Number.MIN_VALUE 的值,代表负无穷大。
Number.NEGATIVE_INFINITY 是一个特殊值,它在算术运算或函数生成一个比 JavaScript 能表示的最小负数还小的数(也就是比 -Number.MAX_VALUE 还小的数)时返回。
JavaScript 显示 NEGATIVE_INFINITY 时使用的是 -Infinity。这个值的算术行为和无穷大非常相似。例如,任何数乘无穷大结果仍为无穷大,任何数被无穷大除的结果为 0。
在 ECMAScript v1 和其后的版本中,还可以用 -Infinity 代替 Number.NEGATIVE_INFINITY。
三,Number对象的方法
toString()
把数字转换为字符串,使用指定的基数。我们在Javascript 类型转换之toString()中已经做过说明。
toLocaleString()
把数字转换为字符串,使用本地数字格式顺序。根据本地规范进行格式化,可能影响到小数点或千分位分隔符采用的标点符号。
当调用该方法的对象不是 Number 时抛出 TypeError 异常。
toFixed(num)
把 Number 四舍五入为指定小数位数的数字。
参数num是必选的,规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。
toFixed方法返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。
当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。
当调用该方法的对象不是 Number 时抛出 TypeError 异常。
toExponential(num)
把对象的值转换成指数计数法。
参数num是必选的,规定指数计数法中的小数位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将使用尽可能多的数字。
toExponential方法返回 NumberObject 的字符串表示,采用指数计数法,即小数点之前有一位数字,小数点之后有 num 位数字。该数字的小数部分将被舍入,必要时用 0 补足,以便它达到指定的长度。
当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。
当调用该方法的对象不是 Number 时抛出 TypeError 异常。
toPrecision(num)
该方法可在对象的值超出指定位数时将其转换为指数计数法。
参数num是必选的,规定必须被转换为指数计数法的最小位数。该参数是 1 ~ 21 之间(且包括 1 和 21)的值。有效实现允许有选择地支持更大或更小的 num。如果省略了该参数,则调用方法 toString(),而不是把数字转换成十进制的值。
toPrecision 返回 NumberObject 的字符串表示,包含 num 个有效数字。如果 num 足够大,能够包括 NumberObject 整数部分的所有数字,那么返回的字符串将采用定点计数法。否则,采用指数计数法,即小数点前有一位数字,小数点后有 num-1 位数字。必要时,该数字会被舍入或用 0 补足。
当 num 太小或太大时抛出异常 RangeError。1 ~ 21 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。
当调用该方法的对象不是 Number 时抛出 TypeError 异常。