首頁  >  文章  >  web前端  >  JavaScript原生物件之Number物件的屬性與方法詳解_javascript技巧

JavaScript原生物件之Number物件的屬性與方法詳解_javascript技巧

WBOY
WBOY原創
2016-05-16 16:09:351727瀏覽

建立 Number 物件的語法:

複製程式碼 程式碼如下:

var myNum = new Number(value);
var myNum = Number(value);

當 Number() 和運算子 new 一起作為建構函式使用時,它會傳回一個新建立的 Number 物件。如果不用 new 運算符,把 Number() 當作一個函數來調用,它將把自己的參數轉換成一個原始的數值,並且傳回這個值(如果轉換失敗,則傳回 NaN)。

MAX_VALUE

MAX_VALUE 屬性是 JavaScript 中可表示的最大的數。它的近似值為 1.7976931348623157 x 10308。最大的負數是 -MAX_VALUE。

比MAX_VALUE還要大的數字是Infinity。 MAX_VALUE是一個靜態屬性,所以呼叫方法應該是Number.MAX_VALUE。

複製程式碼 程式碼如下:

console.log(Number.MAX_VALUE)  //1.7976931348623157e 308

MIN_VALUE

MIN_VALUE 屬性是 JavaScript 中可表示的最小的數(接近 0 ,但不是負數)。它的近似值是 5 x 10-324

所有比MIN_VALUE小的數都會轉換成0。

MIN_VALUE是一個靜態屬性,所以呼叫方法應該是 Number.MIN_VALUE。

NaN

NaN 屬性是代表非數字值的特殊值。此屬性用於指示某個值不是數字。可以把 Number 物件設定為該值,來指示其不是數字值。

可以使用 isNaN() 全域函數來判斷一個值是否是 NaN 值。

Number.NaN 是一個特殊值,說明某些算術運算(如求負數的平方根)的結果不是數字。方法 parseInt() 和 parseFloat() 在不能解析指定的字串時就回傳這個值。對於一些常規情況下傳回有效數字的函數,也可以採用這種方法,用 Number.NaN 說明它的錯誤情況。

JavaScript 以 NaN 的形式輸出 Number.NaN。請注意,NaN 與其他數值進行比較的結果總是不相等的,包括它本身。因此,不能與 Number.NaN 比較來偵測一個值是不是數字,而只能呼叫 isNaN() 來比較。

注意:全域變數NaN 和Number.NaN 是一樣的,NaN是一個不可配置,不可修改的屬性。

複製程式碼 程式碼如下:

console.log(parseInt("abc"));    //NaN
console.log(NaN === NaN);        //false
console.log(Number.NaN === NaN); //false
console.log(isNaN(NaN));         //true
console.log(isNaN(Number.NaN));  //true

NEGATIVE_INFINITY

NEGATIVE_INFINITY 屬性表示小於 -Number.MAX_VALUE 的值。該值代表負無窮大。

JavaScript 顯示 NEGATIVE_INFINITY 時使用的是 -Infinity。這個數值的算術行為和無窮大非常相似。例如,任何數乘無窮大結果仍為無窮大,任何數被無窮大除的結果為 0。

-Infinity 和 Number.NEGATIVE_INFINITY 相等。

複製程式碼 程式碼如下:

var x = (-Number.MAX_VALUE) * 2;
var y = Number.NEGATIVE_INFINITY;
console.log(x);     //-Infinity
console.log(y);     //-Infinity
console.log(x===y); //true

POSITIVE_INFINITY

POSITIVE_INFINITY 屬性表示大於 Number.MAX_VALUE 的值。該值代表正無窮大。

JavaScript 顯示 POSITIVE_INFINITY 時使用的是 Infinity。這個數值的算術行為和無窮大非常相似。例如,任何數乘無窮大結果仍為無窮大,任何數被無窮大除的結果為 0。

Infinity 和 Number.POSITIVE_INFINITY相等。

isFinite() 方法可以判斷參數是否為有限的數字。

複製程式碼 程式碼如下:

var x = Number.NEGATIVE_INFINITY;
var y = Number.POSITIVE_INFINITY;
var z = Infinity;
var a = "abc";
var b = 123;

console.log(isFinite(x));  //false
console.log(isFinite(y));  //false
console.log(isFinite(z));  //false
console.log(isFinite(a));  //false
console.log(isFinite(b));  //true

toString()

toString() 方法可把一個 Number 物件轉換為字串,並傳回結果。

NumberObject.toString(radix)

參數radix是可選的。規定表示數字的基數,使 2 ~ 36 之間的整數。若省略該參數,則使用基數 10,建議始終帶著此參數,防止誤解。例如,當 radix 為 2 時,NumberObject 會被轉換為二進位值表示的字串。

當呼叫該方法的物件不是 Number 時拋出 TypeError 異常。

複製程式碼 程式碼如下:

var a = 100;

console.log(a.toString());    //100
console.log(a.toString(10));  //100
console.log(a.toString(2));   //1100100
console.log(a.toString(8));   //144
console.log(a.toString(16));  //64

toLocaleString()

toLocaleString() 方法可把一個 Number 物件轉換為本地格式的字串。

數字的字串表示,由實作決定,根據本機規範進行格式化,可能會影響小數點或千分位分隔符號所採用的標點符號。

當呼叫該方法的物件不是 Number 時拋出 TypeError 異常。

複製程式碼 程式碼如下:

var a = 123456;

console.log(a.toLocaleString());  //123,456
console.log(a.toLocaleString("zh-Hans-CN-u-nu-hanidec"));  //一二三,四五六

更多參數可以參考:MDN

toFixed()

toFixed() 方法可把 Number 四捨五入為指定小數位數的數字。

NumberObject.toFixed(num)

參數num是必需的。規定小數的位數,是 0 ~ 20 之間的值,包括 0 和 20,有些實作可以支援更大的數值範圍。如果省略了該參數,將會以 0 取代。

傳回 NumberObject 的字串表示,不採用指數計數法,小數點後有固定的 num 位數字。如果必要,該數字會被捨入,也可以用 0 補足,以便它達到指定的長度。如果 num 大於 le 21,則此方法只呼叫 NumberObject.toString(),傳回以指數計數法表示的字串。

當 num 太小或太大時拋出異常 RangeError。 0 ~ 20 之間的值不會引發該異常。有些實作支援更大範圍或更小範圍內的值。當呼叫該方法的物件不是 Number 時拋出 TypeError 異常。

複製程式碼 程式碼如下:

var n = 12345.6789;

console.log(n.toFixed());            //12346
console.log(n.toFixed(2));           //12345.68
console.log(n.toFixed(6));           //12345.678900
console.log((1.23e 20).toFixed(2));  //123000000000000000000.00
console.log((1.23e-10).toFixed(2));  //0.00

注意:由於對浮點數的處理,toFixed() 方法展現出的結果並不是所謂的“四捨五入”或者是“四捨六入五成雙”,而是四捨,六入,五的表現十分混亂。

複製程式碼 程式碼如下:

//Chrome中
console.log(( 0.035 ).toFixed( 2 )); //0.04
console.log(( 0.045 ).toFixed( 2 )); //0.04

建議自己寫方法來取代toFixed()預設行為,可以參考:SO上的討論

複製程式碼 程式碼如下:

Number.prototype.toFixed = function(len){
    var temp = Math.pow(10,len);
    var s = Math.ceil(this * temp)
    return s/temp;
}

console.log(( 0.035 ).toFixed( 2 ));  //0.04
console.log(( 0.045 ).toFixed( 2 ));  //0.05

toExponential()

toExponential() 方法可把物件的值轉換成指數計數法。

NumberObject.toExponential(num)

參數num是可選的。規定指數計數法中的小數位數,是 0 ~ 20 之間的值,包括 0 和 20,有些實現可以支援更大的數值範圍。如果省略了該參數,將使用盡可能多的數字。

傳回 NumberObject 的字串表示,採用指數計數法,即小數點之前有一位數字,小數點之後有 num 位數字。該數字的小數部分將被舍入,必要時以 0 補足,以便它達到指定的長度。

當 num 太小或太大時拋出異常 RangeError。 0 ~ 20 之間的值不會引發該異常。有些實作支援更大範圍或更小範圍內的值。當呼叫該方法的物件不是 Number 時拋出 TypeError 異常。

複製程式碼 程式碼如下:

var num = 10000.1234;

console.log(num.toExponential());    //1.00001234e 4
console.log(num.toExponential(2));   //1.00e 4
console.log(num.toExponential(10));  //1.0000123400e 4

toPrecision()

toPrecision() 方法可將數值格式化為一個十進位數形式的字串。

NumberObject.toPrecision(num)

參數num是可選的。用於控制數字的精度。此參數是 1 ~ 21 之間(且包括 1 和 21)的值。如果省略了該參數,則呼叫方法 toString(),而不是把數字轉換成十進制的值。

複製程式碼 程式碼如下:

var num = 10000.1234;

console.log(num.toPrecision());    //10000.1234
console.log(num.toPrecision(2));   //1.0e 4
console.log(num.toPrecision(10));  //10000.12340

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn