数值(Number)

首页 > JavaScript基本对象 > 数值(Number)

目录

■ 一览

MAX_VALUE, MIN_VALUE, NaN, NEGATIVE_INFINITY, Number(), POSITIVE_INFINITY, toString(radix)

数值

JavaScript 中可以使用10进制数、8进制数、16进制数、实数、浮点数。以 0 开头的整数是8进制数,以 0x 开头的整数是16进制数。

12345    // 10进制数 12345
1.23     // 实数 1.23
1.23e4   // 1.23 × 10的4次方
1.23E4   // 1.23 × 10的4次方
0777     // 8进制数777
0xff88   // 16进制数FF88

■ 数值对象

number = new Number(value)

生成一个保存了 value 的值的数值对象。为了符合面向对象中“数据类型都可以生成对象”的思想,JavaScript准备了这个类,不过基本没什么人用。严格来说,数值和数值对象是不同的东西。

xx = new Number(123);
yy = 123;
zz = xx + yy;
alert(typeof(xx));  // 取得xx的type,结果是object(对象)
alert(typeof(yy));  // 取得yy的type,结果是number(数值)
alert(typeof(zz));  // 取得zz的type,结果是number(计算结果是数值)

■ 把字符串转换成数值

把字符串转换成数值可以使用 parseInt()、parseFloat()、Number() ,或者直接减去数值 0 。

str = "123";
num1 = parseInt(str);
num2 = parseFloat(str);
num3 = Number(str);
num4 = str - 0;

■ 转换成n进制

number.toString(radix)

使用 toString() 可以把数值转换成 radix 进制数(2~36。默认为10)的字符串。下面的例子把 65535 转换成了 16 进制数的字符串 "ffff" 。

xx = 65535;
alert(xx.toString(16));

■ 数值报错

Number.NaN

NaN 是表示“非数值”(Not a Number)的特殊值。它不能使用 == 之类的关系运算符,要确认一个变量是否为数值,请使用 isNaN() 。

var mon = 13;
if ((mon < 1) || (12 < mon)) {
    mon = Number.NaN;
}
if (isNaN(mon)) {
    alert("错误的月份。");
}

■ 极限值

Number.MAX_VALUE
Number.MIN_VALUE

MAX_VALUE 是可使用的最大值(约 1.79769e308)。MIN_VALUE 是可使用的最小值(约 5e-324),接近 0 ,但不是负数,比MIN_VALUE更小的值会被转换成 0 。

xx = 1.8 * 1.0e308;
if (xx >= Number.MAX_VALUE) {
   alert("超过可计算的范围。");
}
Number.POSITIVE_INFINITY
Number.NEGATIVE_INFINITY

POSITIVE_INFINITY 是表示“无限大的正数”的特殊值。NEGATIVE_INFINITY 是表示“无限大的负数”的特殊值。它们可以用来检查乘法等计算的计算结果有没有超出 JavaScript 可使用数值的范围。

xx = 1.8 * 1.0e308;
if ((xx == Number.POSITIVE_INFINITY)
 || (xx == Number.NEGATIVE_INFINITY)) {
   alert("超过可计算的范围。");
}