数值类型
数值类型包含几乎所有的数字——整数、小数、正数、负数等。
以下为数值类型变量的声明示例。
let totalPrice: number = 199.99;
let discount: number = -9.99;
let itemCount: number = 5;
数值类型变量默认以十进制来表示(见以上示例),但也可以用 0b
表示二进制,用 0o
表示八进制,用 0x
表示十六进制来声明变量,示例代码如下。
let hexNumber: number = 0xf01e;
let binaryNumber: number = 0b1011;
let octalNumber: number = 0o456;
数值类型变量实质上是一个 64 位的浮点数。它使用 53 位表示小数位,10 位表示指数位,1 位表示符号位。
该类型变量所能表示的最大的数值为1.797 693 134 862 315 7×10308,它能表示的最小的正数值为 5×10−324。分别通过访问 Number
对象的 MAX_VALUE
属性与 MIN_VALUE
属性查看最大值和最小正值,示例代码如下。
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);
输出结果如下。
> 1.7976931348623157e+308
> 5e-324
如果要取整数的范围,该类型能够准确表示的整数范围为 −253~253,超过这个范围就无法精确表示这个整数,除非使用长整型,下一节会详细介绍。分别通过访问 Number
对象的 MAX_SAFE_INTEGER
属性与 MIN_SAFE_INTEGER
属性查看最大允许值和最小允许值,示例代码如下。
console.log(Number.MAX_SAFE_INTEGER);
console.log(Number.MIN_SAFE_INTEGER);
输出结果如下。
> 9007199254740991
> -9007199254740991
数值类型变量不仅可以用于逻辑运算,例如,相等判断(运算符为 ==
和 ===
)、数字大小判断(运算符为 <
和 >
),还可以用于算术运算,例如,基本的加减乘除计算(运算符为 +
、−
、*
、/
)等。
浮点数在进行算术运算时的精度不如整数的高,有时候会出现一些奇怪的情况,例如,以下代码中, |
let a: number = 0.1;
let b: number = 0.2;
if (a + b == 0.3) {
console.log("比较结果相等");
}
else {
console.log(a + b);
console.log("比较结果不相等");
}
输出结果如下。
> 0.30000000000000004
> 比较结果不相等