JavaScript Number數字型別
阿新 • • 發佈:2019-01-08
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