JavaScript有只有一種類型的number 。
Numbers可以使用或不小數被寫入。
JavaScript的數字
的JavaScript numbers可以具有或不具有小數寫成:
例
var x = 34.00; // A number with decimals
var y = 34; // A number without decimals
超大或超小的數字可以用科學(指數)符號寫成:
例
var x = 123e5; // 12300000
var y = 123e-5; // 0.00123
JavaScript的數字總是64位浮點
與許多其他的編程語言,JavaScript不定義不同類型的數字,喜歡整數,短,長,浮點等。
JavaScript的號碼總是存儲作為雙精度浮點數,繼國際IEEE 754標準。
這種格式存儲在64位,其中數字(分數)被存儲在比特編號0到51,指數中的位52至62,並在比特63中的標誌:
值(即分數/尾數) | 指數 | 標誌 |
---|---|---|
52位(0 - 51) | 11位(52 - 62) | 1比特(63) |
精確
整數(無期或指數記數法表示)被認為是精確到15位。
例
var x = 999999999999999; // x will be 999999999999999
var y = 9999999999999999; // y will be 10000000000000000
試一試» 小數的最大數量是17,但浮點運算並不總是100%準確:
為了解決上述問題,它有助於乘除:
十六進制
JavaScript的解釋數字常量為十六進制,如果他們以0x開頭。
從來不寫一些帶前導零(如07)。
如果他們有一個前導零寫一些JavaScript版本的解讀數字為八進制。
默認情況下,使用Javascript顯示的數字為基數為10位小數。
但是你可以使用toString()方法輸出數字作為基數為16(十六進制),基數8(八進制)或基地2個(二進制)。
例
var myNumber = 128;
myNumber.toString(16); // returns 80
myNumber.toString(8); // returns 200
myNumber.toString(2); // returns 10000000
試一試» 無窮
無窮大(或-Infinity)是值,如果你計算最大可能數之外的數量的JavaScript將返回。
例
var
myNumber = 2;
while (myNumber != Infinity) {
// Execute until Infinity
myNumber = myNumber * myNumber;
}
試一試» 由0(零)事業部也產生無限:
無限是一個數字: typeOf無限返回號碼。
NaN -不是一個數字
NaN是JavaScript保留字表示的值是不是數字。
嘗試做算術與非數字字符串將導致NaN (非數字):
然而,如果字符串中包含的數字值,其結果將是一個數:
您可以使用全局JavaScript函數isNaN()來找出是否一個值是一個數字。
當心NaN的。 如果你在數學運算使用NaN,則結果也將是楠:
或結果可能是一個串聯:
NaN是一個數字,而typeof NaN返回數:
數字可以是對象
通常的JavaScript數字的原始值從文字創建: var x = 123
但號碼也可以被定義為與關鍵字新對象: var y = new Number(123)
不要創建Number對象。 它會減慢執行速度。
在new關鍵字代碼複雜化。 這可能會產生一些意想不到的結果:
當使用==相等運算符,人數相等看起來平等的:
當使用===等於運算符,同等數量不相等的,因為===運營商期望在這兩個類型和值相等。
例
var x = 500;
var y = new Number(500);
// (x === y) is false because x and y have different types
試一試» 或者更糟。 對象不能比擬的:
例
var x = new Number(500);
var y = new Number(500);
// (x == y) is false because objects cannot be compared
試一試» JavaScript對象所不能比擬的。