最新的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»