JavaScript Number 数字对象

JavaScript只有一种数字类型,所有数字都是64位浮点格式。数字可以是整数或小数,可以用科学记数法表示。八进制前缀为0,十六进制前缀为0x。无穷大表示为Infinity,非数字值表示为NaN。数字可以是基本类型或Number对象,但两者在比较时有区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


轻松掌握 JavaScript 中的 Number 数字对象

今天我们要来深入了解 JavaScript 里的 Number 数字对象。
在这里插入图片描述

在 JavaScript 的世界里,数字类型相对比较简单,它只有一种数字类型哦。而且我们书写数字的时候,既可以使用小数点,也可以不使用小数点。

JavaScript 数字的书写方式

在 JavaScript 中,数字的书写很灵活,可以使用小数点,也可以不使用。比如:

var pi = 3.14;    // 使用小数点,这是一个小数
var x = 34;       // 不使用小数点,这是一个整数

当我们遇到极大或极小的数字时,还可以通过科学(指数)计数法来书写。举个例子:

实例

var y = 123e5;    // 这里的 e5 表示乘以 10 的 5 次方,所以 y 的值是 12300000
var z = 123e-5;   // e-5 表示乘以 10 的 -5 次方,z 的值是 0.00123

JavaScript 数字的存储方式

JavaScript 和很多其他编程语言不太一样,它不是类型语言,也就是说它不定义像整数、短整数、长整数、浮点数等不同类型的数字。

在 JavaScript 中,所有的数字都是用浮点型来表示的,采用的是 IEEE754 标准定义的 64 位浮点格式。这种格式能表示的最大值是 ±1.7976931348623157 x 10³⁰⁸ ,最小值是 ±5 x 10⁻³²⁴ 。

64 位的分布是这样的:

  • 值 (aka Fraction/Mantissa) :占 52 位(0 - 51 位)。
  • 指数 :占 11 位(50 - 62 位)。
  • Sign(符号位) :占 1 位(63 位)。

JavaScript 数字的精度问题

整数(不使用小数点或指数计数法)在 JavaScript 中最多为 15 位。看下面的例子:

实例

var x = 999999999999999;   // x 的值就是 999999999999999
var y = 9999999999999999;  // 由于整数最多 15 位,y 的值会变成 10000000000000000

对于小数来说,最大位数是 17 位,不过要注意哦,浮点运算并不总是 100% 准确的。比如:

实例

var x = 0.2 + 0.1; // 按照我们的预期结果应该是 0.3,但实际输出结果为 0.30000000000000004

八进制和十六进制数字

在 JavaScript 里,如果一个数值常量的前缀为 0,那么 JavaScript 会把它解释为八进制数;如果前缀为 0 和 “x”,则会被解释为十六进制数。

实例

var y = 0377;  // 这里的 0377 是八进制数,转换为十进制是 255
var z = 0xFF;  // 0xFF 是十六进制数,转换为十进制同样是 255

这里要注意哦,除非你需要进行八进制转换,否则绝不要在数字前面写零。

默认情况下,JavaScript 数字是按十进制显示的。但我们可以使用 toString() 方法来将数字输出为 16 进制、8 进制、2 进制。比如:

实例

var myNumber = 128;
myNumber.toString(16);   // 这里的参数 16 表示转换为十六进制,返回 80
myNumber.toString(8);    // 参数 8 表示转换为八进制,返回 200
myNumber.toString(2);    // 参数 2 表示转换为二进制,返回 10000000

无穷大(Infinity)的情况

当数字运算的结果超过了 JavaScript 所能表示的数字上限,也就是发生溢出时,结果就会是一个特殊的无穷大(infinity)值,在 JavaScript 中用 Infinity 表示。同样,当负数的值超过了 JavaScript 所能表示的负数范围,结果就是负无穷大,用 -Infinity 表示。

无穷大值的运算特性和我们想的是一样的,基于它们的加、减、乘和除运算结果还是无穷大(当然要保留它们的正负号)。

实例

myNumber = 2;
while (myNumber != Infinity)
{
    myNumber = myNumber * myNumber; // 不断进行乘法运算,直到 myNumber 等于 Infinity
}

另外,除以 0 也会产生无穷大:

实例

var x = 2 / 0;  // 结果是 Infinity
var y = -2 / 0; // 结果是 -Infinity

NaN - 非数字值

NaN 属性代表的是一个非数字值的特殊值,它用于指示某个值不是数字。我们可以把 Number 对象设置为这个值,来表明它不是数字值。

我们可以使用 isNaN() 全局函数来判断一个值是否是 NaN 值。

实例

var x = 1000 / "Apple";  // 因为除数是字符串,不是数字,所以结果是 NaN
isNaN(x); // 返回 true,说明 x 是 NaN

var y = 100 / "1000";  // 这里字符串 "1000" 会被转换为数字 1000 进行运算,结果不是 NaN
isNaN(y); // 返回 false

这里要注意,除以 0 得到的无穷大是一个数字,不是 NaN

实例

var x = 1000 / 0;
isNaN(x); // 返回 false,说明 x 不是 NaN

数字的两种形式:数字和对象

在 JavaScript 中,数字有两种形式,一种是直接赋值,就像 x = 123; 这样,这时 x 就是一个数字类型。另一种是通过 Number 对象来初始化数据,比如 var y = new Number(123); ,这时 y 就是一个 Number 对象。

实例

var x = 123;
var y = new Number(123);
typeof(x) // 返回 "Number",说明 x 是数字类型
typeof(y) // 返回 "Object",说明 y 是对象类型

而且,虽然 xy 的值都是 123,但它们并不相等:

实例

var x = 123;              
var y = new Number(123);
(x === y) // 结果为 false,因为 x 是一个数字,y 是一个对象

数字的属性

Number 对象有一些很有用的属性,比如:

  • MAX_VALUE :表示 JavaScript 中能表示的最大数字。
  • MIN_VALUE :表示 JavaScript 中能表示的最小数字。
  • NEGATIVE_INFINITY :表示负无穷大。
  • POSITIVE_INFINITY :表示正无穷大。
  • NaN :表示非数字值。
  • prototype :用于实现对象的继承等功能。
  • constructor :指向创建该对象的函数。

数字的方法

Number 对象也有很多实用的方法,比如:

  • toExponential() :把数字转换为指数计数法表示的字符串。
  • toFixed() :把数字格式化为指定小数位数的字符串。
  • toPrecision() :把数字格式化为指定精度的字符串。
  • toString() :把数字转换为字符串,可以指定转换的进制。
  • valueOf() :返回数字对象的原始值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁辰兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值