美文网首页JavaScript
JavaScript 数据类型——数字 (Number)

JavaScript 数据类型——数字 (Number)

作者: Levid_GC | 来源:发表于2018-07-05 11:05 被阅读19次

在 JavaScript 中,整形 (integer) 和浮点型 (float-point) 数值都是 number 数据类型表示。

var num = 0;
typeof num;  // "number"

num = 3.14;
typeof num;  // "number"

取值范围

number 数据类型采用的是 双精度 64 位浮点格式 (IEEE754)

表示形式

多数情况下,我们的数字都是以十进制的形式表示的,但是,在 JavaScript 中,我们还可以以八进制和十六进制的形式表示数字。

  • 八进制:以 0 开始的数字,var num = 0377; // 255
  • 十六进制:以 0x (0X) 开始的数字,var num = 0xff; // 255
  • 指数字面量:e 或 E,比如:2e32e-3

两种特殊的数字类型

Infinity

Infinity 的意思即无穷,也就是说一个数字的值太大了,以至于 JavaScript 都已经没法处理它了。所以如果数字的范围超过了上面浮点类型表示的最大范围则变为 Infinity

注意事项:

  • Infinty 与 Infinity 之间执行减、除结果为 NaN,加、乘结果为 Infinity。
  • Infinty 与除 Infinity 和 NaN 之外的数字操作结果都为 Infinity。

判断方式:Number.isFinite(value)

NaN

NaN 即 "Not A Number" 的缩写,也就是非数字,虽然名字叫非数字,但它本质上却是数字类型:typeof NaN; // "number"。如果您的数字相关操作失败了,都会得到一个 NaN,比如 1 * 'f'Math.sqrt(-1),等等。同时,NaN 具有传染性,也就是它与任何数据操作的结果都是一个 NaN

判断方式:Number.isNaN(value)

Number 对象

Number 对象在 JavaScript 中并不是一个基元数字数据类型:

var numObj = new Number(1);

typeof numObj;  // "object"
numbObj.valueOf();  // 1

因此,在 JavaScript 中避免使用 Number 对象来表示数字,这给判断数据是否为数字类型带来了困难,其次,要想获取它的值,还需要调用 valueOf 方法,存在诸多不便。

但是我想调用 Number 类型的方法怎么办呢,不用担心,JavaScript 会自动对基元数字类型进行装箱操作,在背后将其转换为 Number 类型:

var num = 3;
num.toString();  // "3"

Number 构造函数属性

属性 描述
Number.MAX_VALUE 一个包含最大允许数字的常量属性(不可更改)。
>>> Number.MAX_VALUE
1.7976931348623157e+308
>>> Number.MAX_VALUE = 101;
Number.MAX_VALUE is read-only
Number.MIN_VALUE 您能使用的最小的数字,同上,也无法更改。
>>> Number.MIN_VALUE
5e-324
Number.NaN 包含了 NaN 数字。
>>> Number.NaN
NaN
NaN 与任何数据都不相等,包括其自身。
>>> Number.NaN === NaN
false
Number.NaN 相对于更方便使用的 NaN 更加可靠,因为后者存在被重写的风险。
>>> NaN = 1; // 不要这么做!
1
>>> NaN
1
>>> Number.NaN
NaN
Number.POSITIVE_INFINITY 包含了 Infinity 数字。它比全局的 Infinity 值更可靠(global 对象的属性),因为它是只读的。
Number.NEGATIVE_INFINITY 包含了 -Infinity 数字。其余同上。

Number 对象方法

方法 描述
toFixed(fractionDigits) 将一个数字对象定点表示为一个字符串。剩余的数字四舍五入。
>>> var n = new Number(Math.PI);
>>> n.valueOf();
3.141592653589793
>>> n.toFixed(3)
"3.142"
toExponential(fractionDigits) 将一个数字对象以指数记号法的形式表示为一个字符串。剩余的数字四舍五入。
>>> var n = new Number(56789);
>>> n.toExponential(2)
"5.68e+4"
toPrecision(precision) 一个数字对象的字符串表示形式,指数或定点表示形式,这取决于数字对象本身。
>>> var n = new Number(56789);
>>> n.toPrecision(2)
"5.7e+4"
>>> n.toPrecision(5)
"56789"
>>> n.toPrecision(4)
"5.679e+4"
>>> var n = new Number(Math.PI);
>>> n.toPrecision(4)
"3.142"

参考资料

相关文章

网友评论

    本文标题:JavaScript 数据类型——数字 (Number)

    本文链接:https://www.haomeiwen.com/subject/hybeuftx.html