這篇文章主要介紹了JavaScript原生對象之Number對象的屬性和方法詳解,本文講解了創建 Number 對象的語法、MAX_VALUE、MIN_VALUE、NaN等屬性或方法,需要的朋友可以參考下
創建 Number 對象的語法:
代碼如下:
MAX_VALUE
MAX_VALUE 屬性是 JavaScript 中可表示的最大的數。它的近似值為 1.7976931348623157 x 10308。最大的負數是 -MAX_VALUE。
比MAX_VALUE還要大的數是Infinity。MAX_VALUE是一個靜態屬性,所以調用方法應該是Number.MAX_VALUE。
代碼如下:
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是一個不可配置,不可修改的屬性。
代碼如下:
NEGATIVE_INFINITY
NEGATIVE_INFINITY 屬性表示小於 -Number.MAX_VALUE 的值。該值代表負無窮大。
JavaScript 顯示 NEGATIVE_INFINITY 時使用的是 -Infinity。這個值的算術行為和無窮大非常相似。例如,任何數乘無窮大結果仍為無窮大,任何數被無窮大除的結果為 0。
-Infinity 和 Number.NEGATIVE_INFINITY 相等。
代碼如下:
POSITIVE_INFINITY
POSITIVE_INFINITY 屬性表示大於 Number.MAX_VALUE 的值。該值代表正無窮大。
JavaScript 顯示 POSITIVE_INFINITY 時使用的是 Infinity。這個值的算術行為和無窮大非常相似。例如,任何數乘無窮大結果仍為無窮大,任何數被無窮大除的結果為 0。
Infinity 和 Number.POSITIVE_INFINITY相等。
isFinite() 方法可以判斷參數是否是有限的數字。
代碼如下:
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 異常。
代碼如下:
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 異常。
代碼如下:
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 異常。
代碼如下:
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() 方法展現出的結果並不是所謂的“四捨五入”或者是“四捨六入五成雙”,而是四捨,六入,五的表現十分混亂。
代碼如下:
建議自己寫方法來替換toFixed()默認行為,可以參考:SO上的討論:
代碼如下:
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 異常。
代碼如下:
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(),而不是把數字轉換成十進制的值。
代碼如下:
console.log(num.toPrecision()); //10000.1234
console.log(num.toPrecision(2)); //1.0e+4
console.log(num.toPrecision(10)); //10000.12340