最新的Web開發教程
 

JavaScript數字


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%準確:

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
試一試»

十六進制

JavaScript的解釋數字常量為十六進制,如果他們以0x開頭。

var x = 0xFF;             // x will be 255
試一試»

從來不寫一些帶前導零(如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(零)事業部也產生無限:

var x =  2 / 0;          // x will be Infinity
var y = -2 / 0;          // y will be -Infinity
試一試»

無限是一個數字: typeOf無限返回號碼。

typeof Infinity;        // returns "number"
試一試»

NaN -不是一個數字

NaN是JavaScript保留字表示的值是不是數字。

嘗試做算術與非數字字符串將導致NaN (非數字):

var x = 100 / "Apple";  // x will be NaN (Not a Number)
試一試»

然而,如果字符串中包含的數字值,其結果將是一個數:

var x = 100 / "10";     // x will be 10
試一試»

您可以使用全局JavaScript函數isNaN()來找出是否一個值是一個數字。

var x = 100 / "Apple";
isNaN(x);               // returns true because x is Not a Number
試一試»

當心NaN的。 如果你在數學運算使用NaN,則結果也將是楠:

var x = NaN;
var y = 5;
var z = x + y;         // z will be NaN
試一試»

或結果可能是一個串聯:

var x = NaN;
var y = "5";
var z = x + y;         // z will be NaN5
試一試»

NaN是一個數字,而typeof NaN返回數:

typeof NaN;             // returns "number"
試一試»

數字可以是對象

通常的JavaScript數字的原始值從文字創建: var x = 123

但號碼也可以被定義為與關鍵字新對象: var y = new Number(123)

var x = 123;
var y = new Number(123);

// typeof x returns number
// typeof y returns object
試一試»

不要創建Number對象。 它會減慢執行速度。
new關鍵字代碼複雜化。 這可能會產生一些意想不到的結果:

當使用==相等運算符,人數相等看起來平等的:

var x = 500;             
var y = new Number(500);

// (x == y) is true because x and y have equal values
試一試»

當使用===等於運算符,同等數量不相等的,因為===運營商期望在這兩個類型和值相等。

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對象所不能比擬的。


自測練習用!

練習1» 練習2» 練習3» 練習4»