1 Number 的特點
★ 為64位浮點,與許多其他編程語言不同,
JavaScript不會定義不同類型的數(shù)字,如整數(shù),短,長,浮點等。
JavaScript號碼始終作為雙精度浮點數(shù)存儲,遵循國際IEEE 754標準。
★ 整數(shù)(無周期或指數(shù)符號的數(shù)字)精確到15位數(shù)
var x = 999999999999999; // x will be 999999999999999
var y = 9999999999999999; // y will be 10000000000000000
★ 最小小數(shù)位數(shù)為17,但浮點運算并不總是100%準確:
var x = 0.2 + 0.1; // x will be 0.30000000000000004
解決方法 :
var x = (0.2 * 10 + 0.1 * 10) / 10; // x will be 0.3
1.1 數(shù)字的 + 計算
// 當(dāng)其中一個值為字符串時,數(shù)字將會轉(zhuǎn)化成字符串再進行字符串相加
★ eg :
var x = 10;
var y = 20;
var z = x + y; // 30 number
★ eg :
var x = "10";
var y = "20";
var z = x + y; // 1020 string
★ eg :
var x = 10;
var y = 20;
var z = "The result is: " + x + y; // The result is: 1020 string
★ eg :
var x = 10;
var y = 20;
var z = "30";
var result = x + y + z; // 3030 string
1.2 數(shù)字的 - , * , / 計算
// 兩個值都為數(shù)字串(如 "150"),則先轉(zhuǎn)換成number再進行計算,如果一個值為非數(shù)字串("你"),
則轉(zhuǎn)化不了結(jié)果為NaN,NaN與任何值計算都為NaN
★ -
var x = "100";
var y = "10";
var z = x - y; // 90 number
★ *
var x = "100";
var y = 10;
var z = x * y; // 1000 number
★ /
var x = 100;
var y = "10";
var z = x / y; // 10 number
1.3 NaN - 不是數(shù)字 Not-a-Number
// NaN是一個JavaScript保留字,表示一個數(shù)字不是合法的號碼。
★ eg :
var x = 100 / "Apple"; // NaN (Not a Number)
★ eg :
var x = NaN;
var y = "5";
var z = x + y; // "NaN5" string
★ eg :
typeof NaN; // returns "number"
★ isNaN()
var x = 100 / "Apple";
isNaN(x); // 返回true,因為x不是一個數(shù)字。
1.4 無窮 infinity
★ eg :
// 正無窮大(或-Infinity)是如果您計算最大可能數(shù)字之外的數(shù)字,JavaScript將返回值。
var myNumber = 2;
while (myNumber != Infinity) { // Execute until Infinity
myNumber = myNumber * myNumber;
}
// Infinity
★ eg :
// 除以0也產(chǎn)生無限大:
var x = 2 / 0; // Infinity 正無窮
var y = -2 / 0; // -Infinity 負無窮
★ eg :
// Infinity是一個數(shù)字:無窮大的typeof返回數(shù)字。
typeof Infinity; // returns "number"
1.5 十六進制
★ eg :
// 如果數(shù)字常量前面加上0x,則JavaScript將數(shù)字常量解釋為十六進制。
var x = 0xFF; // 255
★ 默認情況下,JavaScript將顯示數(shù)字作為十進制。
但是您可以使用toString()方法輸出數(shù)字作為基數(shù)16(十六進制),基數(shù)8(八進制)或基數(shù)2(二進制)。
var a = 128;
a.toString(16); // returns 80 十六進制
a.toString(8); // returns 200 八進制
a.toString(2); // returns 10000000 二進制
2 Number 的方法
★ toString() // 數(shù)字轉(zhuǎn)換為字符串
var a = 123;
var b = a.toString();
console.log(b);// 123
console.log(typeof b); // string
★ toExponential()// 返回一個字符串,數(shù)字用指數(shù)符號舍入并寫入
var x = 9.656;
x.toExponential(2); // returns 9.66e+0
x.toExponential(4); // returns 9.6560e+0
★ toFixed() // 返回一個字符串 指定小數(shù)位數(shù),并四舍五入 (修改小數(shù)位數(shù))
var x = 9.656;
x.toFixed(0); // returns 10
x.toFixed(2); // returns 9.66
x.toFixed(4); // returns 9.6560
x.toFixed(6); // returns 9.656000
★ toPrecision()// 返回一個字符串,數(shù)字用指定的長度寫 (修改總位數(shù))
var x = 9.656;
x.toPrecision(); // returns 9.656
x.toPrecision(2); // returns 9.7
x.toPrecision(4); // returns 9.656
x.toPrecision(6); // returns 9.65600
★ valueOf()// 將Number對象轉(zhuǎn)換為原始值 (typeof = number)
var x = 123;
x.valueOf(); // returns 123 from variable x
(123).valueOf(); // returns 123 from literal 123
(100 + 23).valueOf(); // returns 123 from expression 100 + 23
在JavaScript中,一個數(shù)字可以是一個原始值(typeof = number)或一個對象(typeof = object)。
valueOf()方法在JavaScript中用于將Number對象轉(zhuǎn)換為原始值。
所有JavaScript數(shù)據(jù)類型都具有valueOf()和toString()方法。
3 String 轉(zhuǎn)化為 Number
★ Number() // 可用于將JavaScript變量轉(zhuǎn)換為數(shù)字
x = true;
Number(x); // returns 1
x = false;
Number(x); // returns 0
x = new Date();
Number(x); // returns 1404568027739, 在Date()中使用Number()方法返回自1.1.1970以來的毫秒數(shù)
x = "10"
Number(x); // returns 10
x = "10 20"
Number(x); // returns NaN 只能轉(zhuǎn)換純數(shù)字文本.
★ parseInt() // 解析一個字符串并返回一個整數(shù), 允許空格, 只有第一個數(shù)字被返回
parseInt("10"); // returns 10
parseInt("10.33"); // returns 10
parseInt("10 20 30"); // returns 10
parseInt("10 years"); // returns 10
parseInt("years 10"); // returns NaN 如果數(shù)字無法轉(zhuǎn)換,則返回NaN(不是數(shù)字)。
★ parseFloat()// 解析一個字符串并返回一個浮點型數(shù)值, 允許空格, 只有第一個數(shù)字被返回
parseFloat("10"); // returns 10
parseFloat("10.33"); // returns 10.33
parseFloat("10 20 30"); // returns 10
parseFloat("10 years"); // returns 10
parseFloat("years 10"); // returns NaN
4 Number 屬性(常數(shù))
★ MAX_VALUE // 返回Number的最大值
var x = Number.MAX_VALUE;
console.log(x); // 1.7976931348623157e+308
★ MIN_VALUE // 返回Number的最小值
var x = Number.MIN_VALUE;
console.log(x); // 5e-324
★ NEGATIVE_INFINITY // 返回-Infinity 負無窮大 (返回溢出)
★ POSITIVE_INFINITY // 返回Infinity 正無窮大 (返回溢出)
★ NaN 表示一個 "Not-a-Number" (非數(shù)字)
var x = "50p";
console.log(isNaN(x)); // true
5 Math 對象
5.1 Math 方法
★ Math.PI; // returns 3.141592653589793
★ Math.round(x) // 返回x四舍五入之后的整數(shù) (無小數(shù)位)
Math.round(4.7); // returns 5
Math.round(4.4); // returns 4
★ Math.pow(x,y)// 將x的值返回給y的冪
Math.pow(8, 2); // returns 64
★ Math.sqrt(x) // 返回x的平方根
Math.sqrt(64); // returns 8
★ Math.abs(x) // 返回x的絕對(正)值:
Math.abs(-4.7); // returns 4.7
★ Math.ceil(x) // 返回x的值四舍五入向上到其最接近的整數(shù)
Math.ceil(4.4); // returns 5
★ Math.floor(x) // 返回x的值四舍五入向下到其最接近的整數(shù):
Math.floor(4.7); // returns 4
★ Math.sin(x) // 返回角度x的正弦(-1和1之間的值)(以弧度表示)
如果要使用度數(shù)而不是弧度,則必須將度數(shù)轉(zhuǎn)換為弧度:
角度弧度=角度(度)x PI / 180
Math.sin(90 * Math.PI / 180); // returns 1 (the sine of 90 degrees)
★ Math.cos(x) // 返回角度x(以弧度表示)的余弦(-1和1之間的值)
如果要使用度數(shù)而不是弧度,則必須將度數(shù)轉(zhuǎn)換為弧度:
角度弧度=角度(度)x PI / 180。
Math.cos(0 * Math.PI / 180); // returns 1 (the cos of 0 degrees)
★ Math.min()和 Math.max()// 可用于查找參數(shù)列表中的最低或最高值
Math.min(0, 150, 30, 20, -8, -200); // returns -200
Math.max(0, 150, 30, 20, -8, -200); // returns 150
★ Math.random() // 返回0(含)和1(排除)之間的隨機數(shù)
console.log(Math.round(Math.random()*10)); // 返回0~10之間的隨機整數(shù)
5.2 Math 屬性 (常數(shù))
JavaScript提供了可以使用Math對象訪問的8個數(shù)學(xué)常數(shù):
Math.E // 返回自然對數(shù) 2.718281828459045
Math.PI //返回圓周率 3.141592653589793
Math.SQRT2 //返回2的平方根 1.4142135623730951
Math.SQRT1_2 //返回1 / 2的平方根 0.7071067811865476
Math.LN2 //返回2的自然對數(shù) 0.6931471805599453
Math.LN10 //返回10的自然對數(shù) 2.302585092994046
Math.LOG2E //返回以2為底的對數(shù)E 1.4426950408889634
Math.LOG10E //返回以10為底的對數(shù)E 0.4342944819032518
5.3 Math 構(gòu)造函數(shù)
與其他全局對象不同,Math對象沒有構(gòu)造函數(shù)。方法和屬性是靜態(tài)的。
可以使用所有方法和屬性(常量),而不必首先創(chuàng)建Math對象。
5.4 Math 方法匯總
abs(x) 返回x的絕對值
acos(x) 返回x的余弦,弧度
asin(x) 返回x的反正弦,弧度
atan(x) 返回x的反正切值之間-π/ 2和π/ 2弧度
atan2(y, x) 返回參數(shù)的反正切的商
ceil(x) 返回x的值四舍五入向上到其最接近的整數(shù)
floor(x) 返回x的值四舍五入向下到其最接近的整數(shù)
cos(x) 返回x的余弦(x為弧度)
exp(x) 返回前值 Ex
log(x) 返回的自然對數(shù)(底數(shù))x
max(x, y, z, ..., n) 返回數(shù)的最高值
min(x, y, z, ..., n) 返回數(shù)字的最低值
pow(x, y) 將x的值返回給y的冪
sqrt(x) 返回x的平方根
random() 返回一個0到1之間的隨機數(shù)
round(x) 返回x的值舍入到最接近的整數(shù)
sin(x) 返回x的正弦(x為弧度)
sqrt(x) 返回x的平方根
tan(x) 返回一個角的切線