JavaScript Number数字类型

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

猜你喜欢

转载自blog.csdn.net/qiumingsheng/article/details/49995897