javascript
022_JavaScript数字
1. JavaScript只有一種數值類型Number。(沒有其它語言的short、int、long、float、double)
2. 書寫數值時帶不帶小數點均可。
3. JavaScript數值始終是64位的浮點數
3.1. JavaScript數值始終以雙精度浮點數來存儲, 根據國際IEEE 754標準。
3.2. 此格式用64位存儲數值, 其中0到51存儲數字(片段), 52到62存儲指數, 63位存儲符號:
3.3. 整數類型的范圍: 5e-324 ~ 1.7976931348623157e+308。
3.4. 值得注意的是, 對于整數的位運算(比如位移等操作), JavaScript僅支持32位整型數, 也即從-2147483648到+2147483647之間的整數。
4. 精度
4.1. 整數會被精確到15位:
var a = 999999999999999; // a是15位整數最大值, 能保證精度, 是999999999999999 var b = 9999999999999997; // b是16位整數, 不保證精度 var c = 9999999999999999; // c是16位整數, 不保證精度 // 15位的整數進行數學運行能夠保證精準 var d = (((999999999999999 - 100000 - 1) / 2 - 9999) / 4 * 8 + 111999 + 8000) / 9 / 3 + 960900000000000;4.2. 小數在進行數學運算的時候最大數是17位, 但是浮點的算數并不總是100%精準:
var e = 0.2 + 0.1; // 小數在進行數學運算的時候最大數是17位 var f = 0.3 - 0.2111; // 小數在進行數學運算的時候最大數是17位 var g = 0.001 + 1.1; // 并不總是17位小數 // 我們在對小說進行算數運算的時候, 通常對小說進行擴大10的幾次方, 計算完成后, 再除以這個10的幾次方 var h = (0.3 * 10000 - 0.2111 * 10000) / 10000;5. 科學計數法
5.1. 超大或超小的數可通過科學計數法來寫。
5.2. 大于等于le+21的數字會自動使用科學計數法輸出。
5.3. 小于le+21的數字縱然我們用科學計數法表示, 但輸出時也會是完整數字。
5.4. 默認把具有6個或6個以上前導0的浮點數轉換成科學計數法。
var i = 9.99999999999999930000e20; // 小于le+21的數字縱然我們用科學計數法表示, 但輸出時也會是完整數字。 var j = 9.99999999999999940000e20; // 發生了舍入, 大于le+21, 使用科學計數法輸出 var k = 1e21; // 科學計數法 var l = 0.0000001; // 默認把具有6個或6個以上前導0的浮點數轉換成科學計數法。6. 數字字符串
6.1. JavaScript字符串可以擁有數字內容。
6.2. 在所有數字運算中, JavaScript會嘗試將字符串轉換為數字。
6.3. 實例
var m = '100' / '10'; // 結果是10 var n = '100' * '10'; // 結果是1000 var o = '100' - '10'; // 結果是907. NaN-非數值
7.1. NaN 屬于 JavaScript 保留詞,指示某個數不是合法數。
7.2. 嘗試將一個字符串完整的轉換成數字時, 如果轉換失敗, 就會得到NaN(Not a Number)。
7.3. isNaN()函數
7.3.1.?您可使用全局JavaScript函數isNaN()來確定某個值是否是非數字值。
7.3.2.?語法
isNaN(x)7.3.3.?參數
7.3.4. 如果x是特殊的非數字值NaN(或者是被轉換為這樣的值), 返回的值就是true。如果x是其他值, 則返回false。
7.3.5. 如果把NaN與任何值(包括其自身)相比得到的結果均是false, 所以要判斷某個值是否是NaN, 不能使用==或===運算符。正因為如此, isNaN()函數是必需的。
7.4. NaN是數值類型: typeOf NaN返回number。
7.5. 實例
var u = isNaN("111"); // 返回false var v = isNaN("111a"); // 返回true var w = isNaN(NaN); // 返回true, 因為NaN不是數 var x = typeof(NaN); // 返回number8. 無窮數
8.1. Infinity(或-Infinity)是JavaScript在計算數時超出最大可能數范圍時返回的值。
8.2. Infinity是數值類型: typeOf Infinity返回number。
8.3. isFinite()函數
8.3.1. 您可使用全局JavaScript函數isFinite()檢查某個值是否為有窮大的數。
8.3.2. 語法
isFinite(number)8.3.3. 參數
8.3.4. 如果number是有限數字或可轉換為有限數字, 那么返回true。否則, 如果number是NaN(非數字)或者是正、負無窮大的數, 則返回false。
var y = isFinite(111); // 返回true var z = isFinite("111"); // 返回true var A = isFinite("111a"); // 返回false var B = isFinite(Infinity); // 返回false, 因為Infinity是正無窮大 var C = isFinite(-Infinity); // 返回false, 因為-Infinity是負無窮大 var D = isFinite(NaN); // 返回false, 因為NaN非數字 var E = typeof(Infinity); // 返回number var F = typeof(-Infinity); // 返回number var G = isNaN(Infinity); // 返回false, 因為Infinity是正無窮數 var H = isNaN(-Infinity); // 返回false, 因為-Infinity是負無窮數9. 數字和字符串相加
9.1. JavaScript的加法和級聯(concatenation)都使用+運算符。數字用加法, 字符串用級聯。
9.2. 如果對兩個字符串相加,結果將是一個字符串的級聯:
var x = "10"; var y = "20"; var z = x + y; // z 將是 1020(字符串)9.3. 如果您對一個數和一個字符串相加, 結果也是字符串級聯:
var x = 10; var y = "20"; var z = x + y; // z 將是 1020(一個字符串)9.4. 兩個或多個數字算數運算, 并且在語句最左側(JavaScript從左向右進行編譯), 之后又和字符串級聯, 這種情況會先進行算數運算再和字符串級聯。
var x = 10; var y = 20; var z = "30"; var result = x + y + z; // 因為x和y都是數, 10+20將被相加。因為z是字符串, 30+"30"被級聯。10. 進制
10.1. 計算機中常見的進制是: 二進制、八進制、十進制和十六進制。
10.2. 八進制字面量的首數字必須是0, 其后的數字可以是任何八進制數字(0-7)。
var x = 011; // x將是910.3. 十六進制字面量以0x或0X前綴開頭, 然后是任意的十六進制數字(0到9和A到F)。
var x = 0xFF; // x將是25510.4. 默認地, Javascript把數顯示為十進制數。
10.5. 盡管所有整數都可以表示為八進制或十六進制, 但所有數學運算返回的都是十進制結果。
11. 例子
11.1. 代碼
<!DOCTYPE html> <html><head><meta charset="utf-8" /><title>JavaScript數字</title></head><body><script type="text/javascript">var a = 999999999999999; // a是15位整數最大值, 能保證精度, 是999999999999999var b = 9999999999999997; // b是16位整數, 不保證精度var c = 9999999999999999; // c是16位整數, 不保證精度// 15位的整數進行數學運行能夠保證精準var d = (((999999999999999 - 100000 - 1) / 2 - 9999) / 4 * 8 + 111999 + 8000) / 9 / 3 + 960900000000000;var e = 0.2 + 0.1; // 小數在進行數學運算的時候最大數是17位var f = 0.3 - 0.2111; // 小數在進行數學運算的時候最大數是17位var g = 0.001 + 1.1; // 并不總是17位小數// 我們在對小說進行算數運算的時候, 通常對小說進行擴大10的幾次方, 計算完成后, 再除以這個10的幾次方var h = (0.3 * 10000 - 0.2111 * 10000) / 10000; var i = 9.99999999999999930000e20; // 小于le+21的數字縱然我們用科學計數法表示, 但輸出時也會是完整數字。var j = 9.99999999999999940000e20; // 發生了舍入, 大于le+21, 使用科學計數法輸出var k = 1e21; // 科學計數法var l = 0.0000001; // 默認把具有6個或6個以上前導0的浮點數轉換成科學計數法。// 在所有數字運算中, JavaScript會嘗試將字符串轉換為數字。var m = "100" / "10"; // 結果是10var n = "100" * "10"; // 結果是1000var o = "100" - "10"; // 結果是90var p = "10" + "20"; // 結果是1020var q = 10 + "20"; // 結果是1020var r = "10" + 20; // 結果是1020var s = 10 + 20 + "30"; // 結果是3030var t = 10 + "20" + 30; // 結果是102030var u = isNaN("111"); // 返回falsevar v = isNaN("111a"); // 返回truevar w = isNaN(NaN); // 返回true, 因為NaN不是數var x = typeof(NaN); // 返回numbervar y = isFinite(111); // 返回truevar z = isFinite("111"); // 返回truevar A = isFinite("111a"); // 返回falsevar B = isFinite(Infinity); // 返回false, 因為Infinity是正無窮大var C = isFinite(-Infinity); // 返回false, 因為-Infinity是負無窮大var D = isFinite(NaN); // 返回false, 因為NaN非數字var E = typeof(Infinity); // 返回numbervar F = typeof(-Infinity); // 返回numbervar G = isNaN(Infinity); // 返回false, 因為Infinity是正無窮數var H = isNaN(-Infinity); // 返回false, 因為-Infinity是負無窮數var I = 011; // 八進制數, E將是9var J = 0xFF; // 十六進制數, F將是255document.write('a = ' + a + '<br />');document.write('b = ' + b + '<br />');document.write('c = ' + c + '<br />');document.write('d = ' + d + '<br />');document.write('e = ' + e + '<br />');document.write('f = ' + f + '<br />');document.write('g = ' + g + '<br />');document.write('h = ' + h + '<br />');document.write('i = ' + i + '<br />');document.write('j = ' + j + '<br />');document.write('k = ' + k + '<br />');document.write('l = ' + l + '<br />');document.write('"100" / "10" = ' + m + '<br />');document.write('"100" * "10" = ' + n + '<br />');document.write('"100" - "10" = ' + o + '<br />');document.write('"10" + "20" = ' + p + '<br />');document.write('10 + "20" = ' + q + '<br />');document.write('"10" + 20 = ' + r + '<br />');document.write('10 + 20 + "30" = ' + s + '<br />');document.write('10 + "20" + 30 = ' + t + '<br />');document.write('isNaN("111") = ' + u + '<br />');document.write('isNaN("111a") = ' + v + '<br />');document.write('isNaN(NaN) = ' + w + '<br />');document.write('typeof(NaN) = ' + x + '<br />');document.write('isFinite(111) = ' + y + '<br />');document.write('isFinite("111") = ' + z + '<br />');document.write('isFinite("111a") = ' + A + '<br />');document.write('isFinite(Infinity) = ' + B + '<br />');document.write('isFinite(-Infinity) = ' + C + '<br />');document.write('isFinite(NaN) = ' + D + '<br />');document.write('typeof(Infinity) = ' + E + '<br />');document.write('typeof(-Infinity) = ' + F + '<br />');document.write('isNaN(Infinity) = ' + G + '<br />');document.write('isNaN(-Infinity) = ' + H + '<br />');document.write('I = ' + I + '<br />');document.write('J = ' + J + '<br />');</script></body> </html>11.2. 效果圖
總結
以上是生活随笔為你收集整理的022_JavaScript数字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 021_字符串方法
- 下一篇: 023_JavaScript数字方法