1. 程式人生 > >JavaScript Number數字型別

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