JavaScript 数字
- 数据类型:在 JavaScript 中,数字是一种原始数据类型,可以表示整数和浮点数,例如
const a = 3; const b = 3.13;
。 - 特殊数字表现形式:可以使用指数表示法(例如
5e9
和5e-5
)表示非常大或非常小的数字,以及十六进制表示法(例如0xff
)。 - JavaScript 数字特性:
+
运算符用于数字时表示加法,用于字符串时表示连接。NaN
表示非数字值,可通过isNaN()
函数检测。Infinity
和-Infinity
表示超出数字范围的计算结果。BigInt
类型用于表示超过 JavaScript 数字范围的整数。
在 JavaScript 中,数字是原始数据类型。例如,
const a = 3;
const b = 3.13;
与其他一些编程语言不同,您不需要使用 int、float 等特别声明整数或浮点值。
您可以使用指数记法 e 来表示过大或过小的数字。例如,
const a1 = 5e9;
console.log(a1); //5000000000
const a2 = 5e-5;
console.log(a2); // 0.00005
数字还可以用十六进制记法表示。例如,
const a = 0xff;
console.log(a); // 255
const b = 0x00;
console.log(b); // 0
+ 运算符与数字
当 +
用于数字时,它用于加法运算。例如,
const a = 4 + 9;
console.log(a); // 13
当 +
用于数字和字符串时,它用于连接它们。例如,
const a = "4" + 9;
console.log(a); // 49
当数字字符串与其他数值运算一起使用时,数字字符串会被转换为数字。例如,
const a = "4" - 2;
console.log(a); // 2
const a = "4" / 2;
console.log(a); // 2
const a = "4" * 2;
console.log(a); // 8
JavaScript NaN
在 JavaScript 中,NaN
(非数字)是表示值不是数字的关键字。
对数字与字符串进行算术运算(除 +
之外)会导致 NaN
。例如,
const a = 4 - "hello";
console.log(a); // NaN
内置函数 isNaN()
可用于判断一个值是否为数字。例如,
const a = isNaN(9);
console.log(a); // false
const a = isNaN(4 - "hello");
console.log(a); // true
当对 NaN
值使用 typeof
运算符时,它会返回数字输出。例如,
const a = 4 - "hello";
console.log(a); // NaN
console.log(typeof a); // "number"
JavaScript Infinity
在 JavaScript 中,当计算结果超出最大(或最小)可能数字时,会返回 Infinity
(或 -Infinity
)。例如,
const a = 2 / 0;
console.log(a); // Infinity
const a = -2 / 0;
console.log(a); // -Infinity
JavaScript BigInt
在 JavaScript 中,Number 类型只能表示小于 (2^53 - 1) 和大于 -(2^53 - 1) 的数字。然而,如果您需要使用比这更大的数字,您可以使用 BigInt 数据类型。
通过在整数末尾附加 n 来创建 BigInt 数字。例如,
// BigInt 值
const value = 900719925124740998n;
// 相加两个大整数
const value1 = value + 1n;
console.log(value1); // 返回 "900719925124740999n"
注意:BigInt 是在 JavaScript 更新版本中引入的,许多浏览器不支持。访问 JavaScript BigInt 支持 了解更多。
JavaScript 数字以 64 位存储
在 JavaScript 中,数字以 64 位格式 IEEE-754 存储,也称为“双精度浮点数”。
数字以 64 位存储(数字存储在 0 到 51 位位置,指数在 52 到 62 位位置,符号在 63 位位置)。
数字 | 指数 | 符号 |
---|---|---|
52 位(0 - 51) | 11 位(52- 62) | 1 位(63) |
精度问题
对浮点数进行操作会导致一些意外结果。例如,
const a = 0.1 + 0.2;
console.log(a); // 0.30000000000000004
结果应该是 0.3 而不是 0.30000000000000004。这个错误是因为在 JavaScript 中,数字以二进制形式存储以内部表示十进制数字。而十进制数字无法在二进制形式中精确表示。
为了解决上述问题,您可以这样做:
const a = (0.1 * 10 + 0.2 * 10) / 10;
console.log(a); // 0.3
您也可以使用 toFixed()
方法。
const a = 0.1 + 0.2;
console.log(a.toFixed(2)); // 0.30
toFixed(2)
将十进制数四舍五入为两位小数。
const a = 9999999999999999;
console.log(a); // 10000000000000000
注意:整数在 15 位数内是精确的。
Number 对象
您也可以使用 new
关键字创建数字。例如,
const a = 45;
// 创建一个数字对象
const b = new Number(45);
console.log(a); // 45
console.log(b); // 45
console.log(typeof a); // "number"
console.log(typeof b); // "object"
注意:建议避免使用数字对象。使用数字对象会减慢程序速度。
JavaScript 数字方法
以下是 JavaScript 中内置的数字方法列表。
方法 | 描 述 |
---|---|
isNaN() | 确定传递的值是否为 NaN |
isFinite() | 确定传递的值是否为有限数 |
isInteger() | 确定传递的值是否为整数 |
isSafeInteger() | 确定传递的值是否为安全整数 |
parseFloat(string) | 将数字浮点字符串转换为浮点数 |
parseInt(string, [基数]) | 将数字字符串转换为整数 |
toExponential(小数位数) | 以指数记法返回数字的字符串值 |
toFixed(数字) | 以固定点记法返回数字的字符串值 |
toPrecision() | 以指定精度返回数字的字符串值 |
toString([基数]) | 以指定基数返回数字的字符串值 |
valueof() | 返回数字的值 |
toLocaleString() | 返回数字的语言敏感表示字符串 |
例如,
// 检查 a 是否为整数
const a = 12;
console.log(Number.isInteger(a)); // true
// 检查 b 是否为 NaN
const b = NaN;
console.log(Number.isNaN(b)); // true
// 显示两位小数
const d = 5.1234;
console.log(d.toFixed(2)); // 5.12
JavaScript 数字属性
以下是 JavaScript 中的 Number 属性列表。
属性 | 描述 |
---|---|
EPSILON | 返回两个可表示数之间的最小间隔 |
MAX_SAFE_INTEGER | 返回最大安全整数 |
MAX_VALUE | 返回最大可能值 |
MIN_SAFE_INTEGER | 返回最小安全整数 |
MIN_VALUE | 返回最小可能值 |
NaN | 代表“非数字”值 |
NEGATIVE_INFINITY | 代表负无穷大 |
POSITIVE_INFINITY | 代表正无 穷大 |
prototype | 允许向 Number 对象添加属性 |
例如,
// 最大可能值
const a = Number.MAX_VALUE;
console.log(a); // 1.7976931348623157e+308
// 最大安全整数
const a = Number.MAX_SAFE_INTEGER;
console.log(a); // 9007199254740991
JavaScript Number() 函数
Number()
函数用于将各种数据类型转换为数字。例如,
const a = "23"; // 字符串
const b = true; // 布尔值
// 转换为数字
const result1 = Number(a);
const result2 = Number(b);
console.log(result1); // 23
console.log(result2); // 1
如果您想了解更多关于数字转换的内容,请访问 JavaScript 类型转换(JavaScript Type Conversion)。