Number對象
本文參考MDN做的詳細整理,方便大家參考MDN
JavaScript 的 Number 對象是經過封裝的能讓你處理數字值的對象。Number 對象由 Number() 構造器創建。
new Number(value);
如果參數無法被轉換為數字,則返回 NaN。
在非構造器上下文中 (如:沒有 new 操作符),Number(x) 能被用來執行類型轉換。
屬性:
Number.EPSILON IE Safari無
兩個可表示(representable)數之間的最小間隔。EPSILON 屬性的值接近於 2.2204460492503130808472633361816E-16, 或者 2的-52次方.
Number.MAX_SAFE_INTEGER IE無
在 JavaScript 中最大的安全整數 (2的53次方 - 1)。值是9007199254740991,這個數字形成的原因是,Javascript在IEEE 754 中使用double-precision floating-point format numbers作為規定,在這個規定中能安全的表示數字的范圍在-(2的53次方 - 1) 到 2的53次方 - 1之間.
Number.MAX_VALUE
能表示的最大正數。最大的負數是 -MAX_VALUE。MAX_VALUE 屬性值接近於 1.79E+308。大於 MAX_VALUE 的值代表 "Infinity"。
if (num1 * num2 <= Number.MAX_VALUE) {
func1();
} else {
func2();
}
Number.MIN_VALUE
能表示的最小正數即最接近 0 的正數 (實際上不會變成 0)。最小的負數是 -MIN_VALUE。MIN_VALUE 的值約為 5e-324。小於 MIN_VALUE ("underflow values") 的值將會轉換為 0。
if (num1 / num2 >= Number.MIN_VALUE){...}
Number.NaN
特殊的“非數字”值(Not-A-Number)。和 NaN 相同
Number.NEGATIVE_INFINITY
特殊的負無窮大值,在溢出時返回該值。它和全局對象的 Infinity 屬性的負值相同,該值的表現同數學上的無窮大有點兒不同(見MDN)
Number.POSITIVE_INFINITY
特殊的正無窮大值,在溢出時返回改值。它同全局對象 Infinity 屬性的值相同,該值的表現同數學上的無窮大有點兒不同(見MDN)
Number.prototype
表示 Number 構造函數的原型。
靜態方法
Number.isNaN() IE Safari無
用來檢測傳入的值是否是 NaN。只有在參數是真正的數字類型,且值為 NaN 的時候才會返回 true。
在 JavaScript 中,NaN 最特殊的地方就是,我們不能使用相等運算符(== 和 ===)來判斷一個值是否是 NaN,因為 NaN == NaN 和 NaN === NaN 都會返回 false。因此,必須要有一個判斷值是否是 NaN 的方法
和全局函數 isNaN() 相比,該方法不會強制將參數轉換成數字,只有在參數是真正的數字類型,且值為 NaN 的時候才會返回 true。
兼容寫法Polypill:
Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}
Number.isFinite() IE Safari無
用來檢測傳入的參數是否是一個有窮數。和全局的 isFinite() 函數相比,這個方法不會強制將一個非數字的參數轉換成數字,這就意味着,只有真正的數字才有可能返回 true。
Polypill
Number.isFinite = Number.isFinite || function(value) {
return typeof value === "number" && isFinite(value);
}
Number.isInteger() IE Safari無
確定傳遞的值類型是“number”,且是整數。
Polypill
Number.isInteger = Number.isInteger || function(value) {
return typeof value === "number" &&
isFinite(value) &&
Math.floor(value) === value;
};
Number.isSafeInteger() 只有Firefox實現
用來判斷傳入的參數值是否是一個“安全整數”(處於 -(2的53次方 -1) 和 2的53次方 -1 之間的整數)。
Number.parseFloat() IE Safari無
把一個字符串解析成浮點數,和全局對象 parseFloat() 一樣。
Number.parseInt(string[, radix]) IE Safari無
根據給定的進制數把一個字符串解析成整數,和全局對象 parseInt() 一樣。
Number 實例方法
數字字面量直接調用以下方法:只要能夠讓JavaScript引擎不混淆小數點和對象的點運算符,各種寫法都能用,JavaScript會把第一個點理解成小數點(即10.0),把第二個點理解成調用對象屬性,從而得到正確結果。
(10).toString(2)
10..toString(2) // "1010"
10 .toString(2) // "1010"
10.0.toString(2) // "1010"
10['toString'](2) // "1010"
Number.prototype.toExponential(n)
將一個數轉為科學計數法形式字符串。參數表示小數點后有效數字的位數,范圍為0到20,超出這個范圍,會拋出一個RangeError。
Number.prototype.toFixed(x)
將一個數轉為指定位數x的小數,返回這個小數對應的字符串(會進行四舍五入),位數x有效范圍為0到20,超出這個范圍將拋出RangeError錯誤。
Number.prototype.toLocaleString()
返回一個根據本地語言環境的數字格式字符串。重寫了Object.prototype.toLocaleString() 方法
Number.prototype.toPrecision(n)
用於將一個數轉為指定位數n的有效數字的字符串,參數n為有效數字的位數,范圍是1到21,超出這個范圍會拋出RangeError錯誤。該方法執行的四舍五入不可靠,跟浮點數不是精確儲存有關,如:
(12.35).toPrecision(3) // "12.3"
(12.25).toPrecision(3) // "12.3"
(12.15).toPrecision(3) // "12.2"
(12.45).toPrecision(3) // "12.4"
Number.prototype.toString(radius)
用來將一個數值轉為字符串形式.
可選的參數radius,表示輸出的進制,默認是10進制
Number.prototype.valueOf()
返回一個 Number 對象的基本數字值.。重寫了 Object.prototype.valueOf() 方法.