javascript 數(shù)字
javascript 只有一種數(shù)值類型。書寫數(shù)值時(shí)帶不帶小數(shù)點(diǎn)均可。
1. javascript 數(shù)值
書寫 javascript 數(shù)值既可以帶小數(shù)點(diǎn),也可以不帶:
范例
var x = 3.14; // 帶小數(shù)點(diǎn)的數(shù)值 var y = 3;// 不帶小數(shù)點(diǎn)的數(shù)值
超大或超小的數(shù)可通過(guò)科學(xué)計(jì)數(shù)法來(lái)寫:
范例
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
2. javascript 數(shù)值始終是 64 位的浮點(diǎn)數(shù)
與許多其他編程語(yǔ)言不同,javascript 不會(huì)定義不同類型的數(shù),比如整數(shù)、短的、長(zhǎng)的、浮點(diǎn)的等等。
javascript 數(shù)值始終以雙精度浮點(diǎn)數(shù)來(lái)存儲(chǔ),根據(jù)國(guó)際 ieee 754 標(biāo)準(zhǔn)。
此格式用 64 位存儲(chǔ)數(shù)值,其中 0 到 51 存儲(chǔ)數(shù)字(片段),52 到 62 存儲(chǔ)指數(shù),63 位存儲(chǔ)符號(hào):
值(aka fraction/mantissa) | 指數(shù) | 符號(hào) |
---|---|---|
52 bits(0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
3. 精度
整數(shù)(不使用指數(shù)或科學(xué)計(jì)數(shù)法)會(huì)被精確到 15 位。
范例
var x = 999999999999999; // x 將是 999999999999999 var y = 9999999999999999; // y 將是 10000000000000000
小數(shù)的最大數(shù)是 17 位,但是浮點(diǎn)的算數(shù)并不總是 100% 精準(zhǔn):
范例
var x = 0.2 + 0.1; // x 將是 0.30000000000000004
使用乘除法有助于解決上面的問(wèn)題:
范例
var x = (0.2 * 10 + 0.1 * 10) / 10;// x 將是 0.3
4. 數(shù)字和字符串相加
警告?。?/h3>
javascript 的加法和級(jí)聯(lián)(concatenation)都使用 + 運(yùn)算符。
數(shù)字用加法。字符串用級(jí)聯(lián)。
如果您對(duì)兩個(gè)數(shù)相加,結(jié)果將是一個(gè)數(shù):
范例
var x = 10; var y = 20; var z = x + y; // z 將是 30(一個(gè)數(shù))
如果對(duì)兩個(gè)字符串相加,結(jié)果將是一個(gè)字符串的級(jí)聯(lián):
范例
var x = "10"; var y = "20"; var z = x + y; // z 將是 1020(字符串)
如果您對(duì)一個(gè)數(shù)和一個(gè)字符串相加,結(jié)果也是字符串級(jí)聯(lián):
范例
var x = 10; var y = "20"; var z = x + y; // z 將是 1020(一個(gè)字符串)
如果您對(duì)一個(gè)字符串和一個(gè)數(shù)字相加,結(jié)果也是字符串級(jí)聯(lián):
范例
var x = "10"; var y = 20; var z = x + y; // z 將是 1020(字符串)
常見(jiàn)的錯(cuò)誤是認(rèn)為結(jié)果應(yīng)該是 30:
范例
var x = 10; var y = 20; var z = "the result is: " + x + y;
常見(jiàn)的錯(cuò)誤是認(rèn)為結(jié)果應(yīng)該是 102030:
范例
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
javascript 從左向右進(jìn)行編譯。
因?yàn)?x 和 y 都是數(shù),10 + 20 將被相加。
因?yàn)?z 是字符串,30 + "30" 被級(jí)聯(lián)。
5. 數(shù)字字符串
javascript 字符串可以擁有數(shù)字內(nèi)容:
var x = 100; // x 是數(shù)字 var y = "100";// y 是字符串
在所有數(shù)字運(yùn)算中,javascript 會(huì)嘗試將字符串轉(zhuǎn)換為數(shù)字:
該例如此運(yùn)行:
var x = "100"; var y = "10"; var z = x / y;// z 將是 10
該例也將如此運(yùn)行:
var x = "100"; var y = "10"; var z = x * y;// z 將是 1000
該例如此運(yùn)行:
var x = "100"; var y = "10"; var z = x - y;// z 將是 90
但是該例不會(huì)如上例般運(yùn)行:
var x = "100"; var y = "10"; var z = x + y;// z 不會(huì)是 110(而是 10010)
在最后一個(gè)例子中,javascript 用 + 運(yùn)算符對(duì)字符串進(jìn)行了級(jí)聯(lián)。
6. nan - 非數(shù)值
nan 屬于 javascript 保留詞,指示某個(gè)數(shù)不是合法數(shù)。
嘗試用一個(gè)非數(shù)字字符串進(jìn)行除法會(huì)得到 nan(not a number):
范例
var x = 100 / "apple"; // x 將是 nan(not a number)
不過(guò),假如字符串包含數(shù)值,則結(jié)果將是數(shù):
范例
var x = 100 / "10"; // x 將是 10
您可使用全局 javascript 函數(shù) isnan() 來(lái)確定某個(gè)值是否是數(shù):
范例
var x = 100 / "apple"; isnan(x); // 返回 true,因?yàn)?x 不是數(shù)
要小心 nan。假如您在數(shù)學(xué)運(yùn)算中使用了 nan,則結(jié)果也將是 nan:
范例
var x = nan; var y = 5; var z = x + y; // z 將是 nan
結(jié)果也許是串連接:
范例
var x = nan; var y = "5"; var z = x + y; // z 將是 nan5
nan 是數(shù),typeof nan 返回 number:
范例
typeof nan; // 返回 "number"
- JavaScript 使用
- JavaScript 運(yùn)算符
- JavaScript 算術(shù)
- JavaScript 數(shù)據(jù)類型
- JavaScript 函數(shù)
- JavaScript 對(duì)象
- JavaScript 字符串
- JavaScript 數(shù)字
- JavaScript 數(shù)值方法
- JavaScript 數(shù)組
- JavaScript 日期
- JavaScript 日期格式化
- JavaScript 設(shè)置日期方法
- JavaScript Math 對(duì)象
- JavaScript 隨機(jī)
- JavaScript Break 和 Continue
- JavaScript 錯(cuò)誤處理 - Throw 和 Try to Catch
- JavaScript 作用域
- JavaScript 最佳實(shí)踐
- JavaScript 性能