在 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
对象,因为它们会减慢程序速度。
另请阅读