在 JavaScript 中,数字用于表示数值。它们可以是整数 (如 5、10、100) 或小数 (如 3.13、0.5、10.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
当 typeof 运算符用于 NaN 值时,它会输出 number。例如,
let num = 4 - "hello";
console.log(num); // NaN
console.log(typeof num); // number
可以使用内置的 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 中,数字 (尤其是小数) 并不总是被准确存储,这会导致精度问题。例如,
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) 将小数四舍五入到两位小数。
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 支持。
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 类型转换。
在 JavaScript 中,数字可以表示为原始值,也可以表示为 Number 对象的实例。
可以使用 new 关键字创建 Number 对象。例如,
// create a number object
let num = new Number(45);
console.log(num);
console.log(typeof num);
输出
[Number: 45] object
注意: 避免使用 Number 对象,因为它们会减慢程序速度。
另请阅读