网站

JavaScript Number - W3School

Number - JavaScript | MDN

引入

学了 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" 当成 NaNNumber.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_INTEGER9007199254740991最大安全整数
Number.MIN_SAFE_INTEGER-9007199254740991最小安全整数
Number.MAX_VALUE1.79e+308最大数字
Number.MIN_VALUE5e-324最小正数
Number.POSITIVE_INFINITYInfinity正无穷
Number.NEGATIVE_INFINITY-Infinity负无穷
Number.NaNNaN非数字

安全整数是指在这个范围内,整数可以被精确表示,不会有精度问题。

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 数字