Numbers 表格
Numbers 表格
数值由任意系列的数字字符组成,例如:
5数字数据类型还包括几个表示数字概念的特殊全局属性,例如 Infinity 和 NaN。该值表示“非数字”,表示尝试对非数字值执行数学计算可能的结果。
数字对象
将值传递给 Number() 函数时,该值将转换为等值的数字。例如,数字字符串会生成等效数字基元:
Number("10");
>10将 false 或 null 值传递给 Number() 会返回 0,true 会返回 1。
Number(null);
>0
Number(false);
>0
Number(true);
>1`如果值无法转换(例如 undefined 或包含非数字字符的字符串),Number 函数会返回 NaN:
Number(undefined);
>NaN
Number("The number 3.");
>NaN如原型继承中所述,您可能几乎没有理由将 Number 对象用作构造函数,因为它会创建 Number 对象,而不是数字字面量。
let numObject =newNumber(15);
numObject;
>Number{15}此对象会充当其在进行数学运算时分配的值,但由于数据类型不匹配,因此无法对数字字面量进行严格的等式比较,并且与字面量值相比,它无法提供任何实际优势。
let tenObject =newNumber(10);
tenObject +5;
>15
tenObject ===10;
>false浮点数和整数
JavaScript 只有一种数字类型:介于 -2^1024 和 2^1024 之间的 64 位 IEEE 754-1985 双精度浮点数。JavaScript 在将任何数字存储在内存中之前,会先将该数字转换为二进制浮点数(也称为“浮点数”)。float
这种 64 位存储空间(一个正/负“符号”位,11 位用于指数,52 位用于小数)可能会导致出现任何不在允许范围内的位数的精度错误。此限制是 JavaScript 的数字数据类型所固有的。
0.1+0.7
>0.7999999999999999数值可以改为存储为整数,即没有介于 -(2^53 − 1) 和 2^53 − 1 之间的小数的浮点数。由于浮点数和整数以相同的基本方式存储,因此这些数字的运算方式没有实际区别。不过,我们建议尽可能使用整数,以避免精度错误。
数字运算符
将标准数学运算符与数字基元结合使用时,应遵循数学运算顺序:用括号括起来的任何表达式都会先求值,然后计算指数、乘法、除法、加法和减法。
| 运算符 | 名称 | 说明 | 用量 | 结果 |
|---|---|---|---|---|
+ | 加法 | 2+2 | 4 | |
- | 减法 | 4-2 | 2 | |
* | 乘 | 2*5 | 10 | |
/ | 部门 | 10/5 | 2 | |
++ | 递增 | 对数字加上一 | 2++ | 3 |
-- | 减少 | 将数字减去 1 | 3-- | 2 |
** | 指数 | 返回第一个 | ||
| 操作数的第二个操作数次幂的结果。 | 2**4 | 16 | ||
% | 其余 | 返回 | ||
| 第一个操作数除以第二个操作数后所剩的余数。 | 12%5 | 2 |
您还可以使用数学赋值运算符对变量的值执行数学运算,并立即将新计算的值赋给变量。
| 运算符 | 名称 | 用量 |
|---|---|---|
+= | 添加分配 | myValue += 2 |
-= | 减法分配 | myValue -= 2 |
*= | 乘法分配 | myValue *= 2 |
/= | 部门分配 | myValue /= 2 |
**= | 指数赋值 | myValue **= 2 |
%= | 剩余分配任务 | myValue %= 2 |
符号值
数字基元还适用于一些特殊情况:“非数字”值 (NaN) 和表示无穷大的值,可以是正数 (Infinity),也可以是负数 (-Infinity)。
在除以 0 后,您可能很少会遇到 Infinity,在这种情况下,大多数编程语言都会抛出错误:
10/0
>Infinity请注意,JavaScript 区分大小写。Infinity 是表示无穷大概念的数字数据类型,但 infinity 没有特殊含义:
Infinity
>Infinity
infinity
>UncaughtReferenceError: infinity isnotdefined当算术运算的结果无法表示为数字时,NaN(表示“不是数字”)会更频繁地显示。例如,由于 JavaScript 会尝试根据值和上下文推断数据类型,因此仅包含数字的字符串字面量可以在数学运算中使用:
"2"*2;
>4但是,如果该字符串无法解析为数字值,则数学运算会返回非数字:
"two"*2;
>NaN在数学运算中将无效值表示为数字的任何情况下,都会返回 NaN。示例如下:
- 失败的数字转化(例如
parseInt( undefined )) - 结果不是实数的算术运算(例如
0 / 0、Math.sqrt( -10 )) - 结果不确定的算术运算 (
0 * Infinity) - 包含显式
NaN(NaN + 2) 或NaN结果 (2 * "string" / 2) 的算术运算