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