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对象所不能比拟的。