网站
引入
学了 JS 数字 之后,知道 JS 里数字类型只有一种 Number。
但有时候需要对数字做判断或格式化,比如判断是不是整数、保留小数位数、把字符串转成数字。这些操作用 Number 对象的方法就能完成。
正文
定义
定义
Number是 JS 的数字包装对象,提供了数字判断、转换和格式化的静态方法和实例方法。
Number() 构造函数
Number() 可以把其他类型转换为数字。
console.log(Number("123"));
console.log(Number("3.14"));
console.log(Number(true));
console.log(Number(false));
console.log(Number("abc"));Number("abc") 转不了,结果是 NaN。
数字判断方法
Number.isInteger()
判断一个值是不是整数。
console.log(Number.isInteger(3));
console.log(Number.isInteger(3.5));
console.log(Number.isInteger("3"));注意参数必须是数字类型,字符串 "3" 不算整数。
Number.isFinite()
判断一个值是不是有限数字。
console.log(Number.isFinite(100));
console.log(Number.isFinite(1 / 0));
console.log(Number.isFinite(NaN));和全局的 isFinite() 不同,Number.isFinite() 不会自动转换参数类型。
Number.isNaN()
判断一个值是不是 NaN。
console.log(Number.isNaN(NaN));
console.log(Number.isNaN("NaN"));
console.log(Number.isNaN(100));全局的 isNaN() 会把 "NaN" 当成 NaN,Number.isNaN() 不会。
数字转换方法
Number.parseInt()
把字符串解析为整数。
console.log(Number.parseInt("100"));
console.log(Number.parseInt("100px"));
console.log(Number.parseInt("3.14"));
console.log(Number.parseInt("abc"));从字符串开头读取数字部分,遇到非数字就停止。
Number.parseFloat()
把字符串解析为浮点数。
console.log(Number.parseFloat("3.14"));
console.log(Number.parseFloat("3.14abc"));
console.log(Number.parseFloat("abc"));和 parseInt 类似,但会保留小数部分。
Number.parseInt() 和全局的 parseInt() 效果一样,只是写法更规范。
格式化方法
这些是实例方法,要在数字值上调用。
toFixed()
保留指定位数的小数,返回字符串。
let num = 3.14159;
console.log(num.toFixed(2));
console.log(num.toFixed(0));
console.log(num.toFixed(4));会进行四舍五入。
toPrecision()
保留指定位数的有效数字,返回字符串。
let num = 3.14159;
console.log(num.toPrecision(3));
console.log(num.toPrecision(5));和 toFixed 的区别:toFixed 是小数点后几位,toPrecision 是总共几位有效数字。
常量
| 常量 | 值 | 说明 |
|---|---|---|
Number.MAX_SAFE_INTEGER | 9007199254740991 | 最大安全整数 |
Number.MIN_SAFE_INTEGER | -9007199254740991 | 最小安全整数 |
Number.MAX_VALUE | 1.79e+308 | 最大数字 |
Number.MIN_VALUE | 5e-324 | 最小正数 |
Number.POSITIVE_INFINITY | Infinity | 正无穷 |
Number.NEGATIVE_INFINITY | -Infinity | 负无穷 |
Number.NaN | NaN | 非数字 |
安全整数是指在这个范围内,整数可以被精确表示,不会有精度问题。
console.log(Number.MAX_SAFE_INTEGER);
console.log(Number.isSafeInteger(9007199254740991));
console.log(Number.isSafeInteger(9007199254740992));常见写法
| 写法 | 作用 |
|---|---|
Number("123") | 把字符串转为数字 |
Number.isInteger(3) | 判断是否为整数 |
Number.isFinite(100) | 判断是否为有限数 |
Number.isNaN(NaN) | 判断是否为 NaN |
Number.parseInt("100px") | 解析为整数 |
Number.parseFloat("3.14") | 解析为浮点数 |
num.toFixed(2) | 保留 2 位小数 |
num.toPrecision(3) | 保留 3 位有效数字 |
特点
Number()可以把其他类型转为数字- 判断方法都是静态方法,用
Number.xxx()调用 - 格式化方法是实例方法,用
num.xxx()调用 NaN不等于任何值,包括自己,判断要用Number.isNaN()- 超出安全整数范围的计算可能不精确
理解
Number 对象就像一个数字检验站。
它可以帮你检查一个值是不是整数、是不是有限数、是不是 NaN。
也可以帮你把字符串里的数字提取出来,或者把数字格式化成想要的样子。
实际开发中最常用的是 toFixed()(保留小数)和 Number.parseInt()(字符串转数字)。
引出
Number 处理的是数字的判断和转换,如果需要做数学运算(取整、随机数、开方等),可以学习 JS Math 对象。
关于数字类型本身的基础知识,可以看 JS 数字。