在上一章中,我們已經(jīng)學習了數(shù)字的基礎知識,讓我們前進一步,開始考慮可以使用內(nèi)置方法和屬性對數(shù)字執(zhí)行哪些有用的操作。
原始值,例如(25或3.14),不能具有屬性或方法(因為它們不是對象)。
但是在JavaScript中,方法和屬性也可用于原始值,因為JavaScript在執(zhí)行方法和屬性時會將原始值視為對象。
toExponential()方法返回以數(shù)字表示的數(shù)字字符串。
此方法采用一個可選參數(shù),該參數(shù)定義小數(shù)點后的字符數(shù)。
var num = 12.5; num.toExponential(); // 返回 1.25e+1 num.toExponential(2); // 返回 1.25e+1 num.toExponential(4); // 返回 1.2500e+1 num.toExponential(6); // 返回 1.250000e+1測試看看?/?
注意:指數(shù)符號可用于表示數(shù)量級非常大或非常小的數(shù)字。例如,95700000000可以寫為957e8或957e + 8。
toFixed()方法使用定點表示法格式化數(shù)字。
此方法返回的值是一個字符串,并且在小數(shù)點后有確切指定的位數(shù)。
var num = 12.525; num.toFixed(); // 返回 13 num.toFixed(2); // 返回 12.53 num.toFixed(4); // 返回 12.5250 num.toFixed(6); // 返回 12.525000測試看看?/?
如果需要,數(shù)字會四舍五入,如果需要,小數(shù)部分將用零填充,以便具有指定的長度。
toPrecision()方法返回一個字符串,該數(shù)字表示指定精度的數(shù)字。
此方法返回的值是一個字符串,并且在小數(shù)點后有確切指定的位數(shù)。
var num = 5.123456; num.toPrecision();// 5.123456 num.toPrecision(1); // 5 num.toPrecision(2); // 5.1 num.toPrecision(3); // 5.12 num.toPrecision(4); // 5.123 num.toPrecision(10); // 5.123456000測試看看?/?
toString()方法返回一個表示指定數(shù)字的字符串。
var num = 255; num.toString(); // 返回 "255" 作為字符串測試看看?/?
該toString()方法可以選擇接受2到36范圍內(nèi)的整數(shù)參數(shù),該整數(shù)參數(shù)指定用于表示數(shù)值的基數(shù)。
var num = 255; num.toString(10); // 返回 "255" num.toString(16); // 返回 "ff" num.toString(8); // 返回 "377" num.toString(2); // 返回 "11111111"測試看看?/?
另外,我們可以在括號內(nèi)放置一個值,而不是一個變量。
(9048).toString();// 返回 "9048" (false).toString(); // 返回 "false" (50 + 20).toString(); // 返回 "70"測試看看?/?
valueOf()方法返回數(shù)字的原始值。
var x = new Number(50); typeof x.valueOf(); // 返回數(shù)字(而不是對象)測試看看?/?
在JavaScript中,數(shù)字可以是原始值或對象。
該valueOf()方法在JavaScript中用于將Number對象轉換為原始值。
有3個JavaScript 全局函數(shù)可用于將變量轉換為數(shù)字:
Number()函數(shù)
parseInt()函數(shù)
parseFloat()函數(shù)
Number()函數(shù)將給定的參數(shù)轉換為數(shù)字。
如果該值不能轉換為數(shù)字,則返回NaN。
Number(true); // 返回 1 Number(false); // 返回 0 Number("100"); // 返回 100 Number("2 + 6");// 返回 NaN Number("2 6"); // 返回 NaN Number("Parrot"); // 返回 NaN測試看看?/?
如果參數(shù)是Date對象,則該Number()函數(shù)返回自UTC 1970年1月1日以來的毫秒數(shù)。
Number(new Date());測試看看?/?
該parseInt()函數(shù)解析一個字符串,并返回一個整數(shù)。
當您處理CSS單位等值(例如15px,4em等)并且要從中提取數(shù)值時,此功能很有用。
parseInt("12"); // 返回 12 parseInt("12.25");// 返回 12 parseInt("15px"); // 返回 15 parseInt("4 days"); // 返回 4 parseInt("Day 4");// 返回 NaN parseInt("36 24 36"); // 返回 36 parseInt(" 20 "); // 返回 20測試看看?/?
如果第一個字符不能轉換為數(shù)字,則返回NaN。
該parseInt()函數(shù)可選地接受一個整數(shù)參數(shù),該整數(shù)參數(shù)用于指定要使用的數(shù)字系統(tǒng),例如,基數(shù)16(十六進制)表示應將字符串中的數(shù)字從十六進制數(shù)字解析為十進制數(shù)字。
parseInt("FF", 16);// 返回 255 parseInt("1111", 2); // 返回 15測試看看?/?
parseFloat()函數(shù)解析一個字符串,并返回一個浮點數(shù)。
parseFloat("12.25"); // 返回 12.25 parseFloat("5.6em"); // 返回 5.6 parseFloat("80.5 kg");// 返回 80.5 parseFloat("weight 80.5 kg"); // 返回 NaN測試看看?/?
如果第一個字符不能轉換為數(shù)字,則返回NaN。
下表列出了Number對象的屬性:
屬性 | 描述 |
---|---|
MAX_VALUE | 返回JavaScript中可能的最大數(shù)字 |
MIN_VALUE | 返回JavaScript中可能的最小數(shù)字 |
NEGATIVE_INFINITY | 表示負無窮大(溢出時返回) |
POSITIVE_INFINITY | 表示無窮大(溢出時返回) |
NaN | 代表“非數(shù)字”值 |
注意:Number的所有屬性都是靜態(tài)的,您始終將其用作Number.property,而不是作為您創(chuàng)建的Number對象的屬性。
該MAX_VALUE屬性表示JavaScript中可表示的最大數(shù)值。
Number.MAX_VALUE;測試看看?/?
該MIN_VALUE屬性表示JavaScript中可表示的最小正數(shù)值。
Number.MIN_VALUE;測試看看?/?
該NEGATIVE_INFINITY屬性表示負的Infinity值。
Number.NEGATIVE_INFINITY;測試看看?/?
NEGATIVE_INFINITY 溢出返回:
var num = -5 / 0;測試看看?/?
該POSITIVE_INFINITY屬性表示正的Infinity值。
Number.POSITIVE_INFINITY;測試看看?/?
POSITIVE_INFINITY 溢出返回:
var num = 5 / 0;測試看看?/?
該NaN屬性是一個表示非法的值。
例如,如果您嘗試將數(shù)字與字符串相乘,則返回的值為“ NaN”。
var ans = 10 * 'Hello'; document.getElementById('result').innerHTML = ans;測試看看?/?
數(shù)字屬性是靜態(tài)的,您始終將其用作Number.property,而不是作為您創(chuàng)建的Number對象的屬性。
例如,在您創(chuàng)建的對象(而不是Number本身)上調(diào)用MAX_VALUE將導致未定義的值:
var num = 20; num.MAX_VALUE;// undefined測試看看?/?
有關完整的屬性和方法參考,請訪問我們的JavaScript Number Reference。
參考部分包含所有數(shù)字屬性和方法的描述和示例。