JavaScript 数字

在 JavaScript 中,数字用于表示数值。它们可以是整数 (如 510100) 或小数 (如 3.130.510.75)。例如,

let num1 = 5;
let num2 = 3.13;

console.log(num1); // 5
console.log(num2); // 3.13

JavaScript NaN

NaN (Not a Number) 是一个特殊值,当数学运算无法产生有意义的数值结果时返回该值。

对数值和字符串执行算术运算 (加法除外) 会导致 NaN。例如,

let num = 4 - "hello";
console.log(num); // NaN
NaN 是一个数字

当 typeof 运算符用于 NaN 值时,它会输出 number。例如,

let num = 4 - "hello";

console.log(num); // NaN
console.log(typeof num); // number
JavaScript isNaN() 方法

可以使用内置的 isNaN() 函数来判断一个值是否为数字。例如,

let num1 = isNaN(9);
console.log(num1); // false

let num2 = isNaN(4 - "hello");
console.log(num2); // true

JavaScript Infinity

Infinity 是一个特殊值,表示比任何有限数都大的数量。例如,

let num1 = 2 / 0;
console.log(num1); // Infinity

let num2 = -2 / 0;
console.log(num2); // -Infinity

这里,用正数除以 0 会得到 Infinity,而用负数除以 0 则得到 -Infinity

指数计数法表示的数字

您可以使用指数表示法 e 来表示非常大或非常小的数字。例如,

let num1 = 5e9;
console.log(num1);  // 5000000000

let num2 = 5e-5;
console.log(num2);  // 0.00005
十六进制数字

数字也可以用十六进制表示。例如,

let num1 = 0xff;
console.log(num1);  // 255

let num2 = 0x00;
console.log(num2);  // 0

JavaScript 数字方法

以下是 JavaScript 中内置数字方法的列表。

方法 描述
isNaN() 确定传递的值是否为 NaN
isFinite() 确定传递的值是否为有限数字。
isInteger() 确定传递的值是否为整数。
isSafeInteger() 确定传递的值是否为安全整数。
parseFloat() 将数字浮点字符串转换为浮点数字。
parseInt() 将数字字符串转换为整数。
toExponential() 返回数字的指数表示法字符串值。
toFixed() 返回数字的定点表示法字符串值。
toPrecision() 返回数字的指定精度字符串值。
toString() 返回指定基数的字符串值。
valueOf() 返回数字的值。
toLocaleString() 返回一个具有语言敏感表示法的数字字符串。

示例:JavaScript 数字方法

// check if num1 is integer
let num1 = 12;
console.log(Number.isInteger(num1)); // true

// check if num2 is NaN
let num2 = NaN;
console.log(Number.isNaN(num2)); // true

// display up to two decimal points
let num3 = 5.1234;
console.log(num3.toFixed(2)); // 5.12

更多关于 JavaScript 数字的内容

带数字的 + 运算符

+ 仅与数字一起使用时,它会将这些数字相加。例如,

let num = 4 + 9;
console.log(num);  // 13
console.log(typeof num);  // number

+ 与数字和字符串一起使用时,它会将它们连接起来,将数字转换为字符串。例如,

let string_num = "4" + 9;
console.log(string_num);  // 49
console.log(typeof string_num);  // string
数字字符串上的数字运算

当数字字符串与其他数字运算符一起使用时,数字字符串会被转换为数字。例如,

let num = "5" - 2;
console.log(num);  // 3

num = "5" / 2;
console.log(num);  // 2.5

num = "5" * 2;
console.log(num);  // 10
JavaScript 精度问题

在 JavaScript 中,数字 (尤其是小数) 并不总是被准确存储,这会导致精度问题。例如,

let num = 0.1 + 0.2;
console.log(num); // 0.30000000000000004

结果应该是 0.3 而不是 0.3000000000004

发生此错误是因为 JavaScript 以二进制形式存储数字以表示十进制数字。而十进制数字无法在二进制形式中精确表示。

我们可以通过以下方式缓解精度问题

1. 将浮点数转换为整数

let num = (0.1 * 10 + 0.2 * 10) / 10;
console.log(num); // 0.3

2. 使用 toFixed() 方法

let num = 0.1 + 0.2;
console.log(num.toFixed(2)); // 0.30

这里,toFixed(2) 将小数四舍五入到两位小数。

JavaScript BigInt

number 类型只能表示小于 (2^53 - 1) 且大于 -(2^53 - 1) 的值。

但是,如果您需要使用比这更大或更小的数字,您可以使用 BigInt 数据类型。BigInt 允许您对任意大小或精度的数字进行计算。

BigInt 数字是通过在整数末尾添加 n 来创建的。例如,

// BigInt value
let value = 900719925124740998n;

// add two big integers
let value1 = value + 1n;
console.log(value1);

// Output: 900719925124740999n

注意: BigInt 在较新版本的 JavaScript 中引入,并且不受许多浏览器的支持。要了解更多信息,请访问 JavaScript BigInt 支持

JavaScript Number() 函数

Number() 函数将各种类型的数据转换为数字。例如,

let variable1 = "23"; // string
let variable2 = true; // boolean

//convert to number let result1 = Number(variable1); let result2 = Number(variable2);
console.log(result1); // 23 console.log(result2); // 1

要了解更多关于数字转换的信息,请访问 JavaScript 类型转换

Number 对象

在 JavaScript 中,数字可以表示为原始值,也可以表示为 Number 对象的实例。

可以使用 new 关键字创建 Number 对象。例如,

// create a number object
let num = new Number(45);

console.log(num);
console.log(typeof num);

输出

[Number: 45]
object

注意: 避免使用 Number 对象,因为它们会减慢程序速度。


另请阅读

在我们结束之前,让我们来测试一下您对 JavaScript Number 的了解!您能解决以下挑战吗?

挑战

编写一个函数来添加两个数字。

  • 返回 num1num2 的和。
  • 例如,如果 num1 = 4num2 = 5,则预期输出为 9
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战