1. Number对象属性
属性 | 描述 |
---|---|
MAX_VALUE | 可表示的最大的数。 |
MIN_VALUE | 可表示的最小的数。 |
POSITIVE_INFINITY | 正无穷大,溢出时返回该值。 |
NEGATIVE_INFINITY | 负无穷大,溢出时返回该值。 |
NaN | 非数字值。 |
代码示例:
var a = Number.MAX_VALUE;
console.log(a);
//1.7976931348623157e+308
var b = Number.MIN_VALUE;
console.log(b);
//5e-324
var c = new Number(a+a);
console.log(c);
//Number {[[PrimitiveValue]]: Infinity}
var d = new Number(-a-a);
console.log(d);
//Number {[[PrimitiveValue]]: -Infinity}
console.log(Number('a'));
//NaN
console.log(isNaN('a'));
//true
2. Number对象方法
方法 | 描述 |
---|---|
toString | 把数字转换为字符串,使用指定的基数。 |
toLocaleString | 把数字转换为字符串,使用本地数字格式顺序。 |
toFixed | 把数字转换为字符串,结果的小数点后有指定位数的数字。 |
toExponential | 把对象的值转换为指数计数法。 |
toPrecision | 把数字格式化为指定的长度。 |
valueOf | 返回一个 Number 对象的基本数字值。 |
代码示例:
var a = 10000;
console.log(a.toString());
//10000
console.log(a.toLocaleString());
//Chrome:10,000 IE:10,000.00
var b = 123.4567;
console.log(b.toFixed(2));
//123.46
console.log(b.toPrecision(2));
//1.2e+2
console.log(b.toExponential());
//1.2345e+2
console.log(b.toExponential(2));
//1.23e+2
console.log(b.valueOf());
//123.4567
2.1 toString与toLocalString的区别
toString()是javascript中所有对象都自带的一个方法,将对象本身转化为字符串输出。
toLocaleString()也是将对象作为字符串输出,区别在于中间加入了“本地化”的过程。
这种区别在检测时间对象时特别明显,如下所示:
var date = new Date();
console.log(date.toString());
//Chrome:Tue Nov 24 2015 20:09:50 GMT+0800 (中国标准时间)
//IE:Tue Nov 24 20:09:50 UTC+0800 2015
console.log(date.toLocaleString());
//Chrome:2015/11/24 下午8:09:50
//IE:2015年11月24日 20:09:50
从上面的代码也可看出Chrome和IE“本地化”的实现也是不一样的
2.2 toString与valueOf的区别
toString的解释参见上一个例子
valueOf表示的是对象本身的值
这么解释起来并不明确,很难区分二者描述上的区别,加上Number又是一个基本对象,从例子上也看不出变化。让我们稍稍超前一点借用一下数组对象。
var arr = [123,"sean"];
console.log(arr.toString());
//123,sean
console.log(arr.valueOf());
//[12, "sea"]
toString()方法仅仅将arr的内容转成字符串打印出来,但是丢失了数据原本的类型。但是通过valueOf()我们可以清晰地看出arr是Array类型,12是Number类型,“sean”是String类型。
2.3 toPrecision、toFixed与toExponential的区别
toFixed控制的则是一个数字小数点后保留的位数
toPrecision控制的是数字的精度
toExponential是将一个数用科学计数法的形式表示
从解释上就可以看出其实这三者完全没有关系,只是在某些特殊情况下三者的结果在表现形式上看着相似而已。
var a = 123.456;
console.log(a.toFixed(2));
//保留小数点后两位 123.46
console.log(a.toPrecision(2));
//保留两位有效数字 1.2e+2
console.log(a.toExponential());
//科学计数法表示 1.23456e+2
3. 注意事项
3.1 1/0和0/0的结果不同
console.log(1/0);
//Infinity
console.log(0/0);
//NaN
3.2 NaN本身是数字类型,但它不等于任何数字(包括它本身)
console.log(typeof NaN)
//number
console.log(NaN==NaN)
//false