JavaScript Number 对象

Number 是 JavaScript 的基本包装对象之一,对应数字类型。它既用来存放数值(整数、小数),又提供处理数字的常量与方法:格式化小数、进制转换、判断 NaN、把字符串转成数字等。任何计算、金额、统计都离不开它,数字操作几乎都要经过 Number。

数字的两种形态

JS 中的数字统一为 64 位浮点数(没有 int/float 之分)。直接写的数字是基本类型;用 new Number() 创建的是对象形态(很少用,typeof 也不同):

const n = 42;             // 基本类型
const m = new Number(42); // 包装对象
console.log(typeof n);    // 输出:number
console.log(typeof m);    // 输出:object
console.log(n === m);     // 输出:false(类型就不同)

平时直接写数字即可,调用方法时 JS 会自动把基本类型临时包装成对象。

格式化方法

  • toFixed(n):保留 n 位小数,返回字符串(四舍五入)。
  • toPrecision(n):保留 n 位有效数字。
  • toString(radix):转成 radix 进制的字符串。
const x = 3.14159;
console.log(x.toFixed(2));     // 输出:3.14
console.log(x.toPrecision(3)); // 输出:3.14(共 3 位有效数字)
console.log((255).toString(16)); // 输出:ff(十六进制)
console.log((255).toString(2));  // 输出:11111111(二进制)

toFixed 返回的是字符串,参与运算前记得用 Number() 转回数字。

字符串转数字:Number / parseInt / parseFloat

  • Number("123"):整体转换,转不动就返回 NaN。
  • parseInt("123px"):从头解析整数部分,忽略后面的非数字。
  • parseFloat("3.14米"):解析小数部分。
console.log(Number("123"));     // 输出:123
console.log(Number("12a"));     // 输出:NaN(整体转换失败)
console.log(parseInt("123px")); // 输出:123
console.log(parseInt("101", 2)); // 输出:5(按二进制解析)
console.log(parseFloat("3.14米")); // 输出:3.14

特殊值与判断

  • NaN:非数值(Not a Number),它不等于任何值,包括它自己。
  • Infinity / -Infinity:超出可表示范围的正负无穷。
  • isNaN():全局函数,会先做类型转换,有坑;Number.isNaN() 只判断"是不是 NaN"。
  • Number.isInteger():判断是否为整数。
console.log(0 / 0);              // 输出:NaN
console.log(NaN === NaN);        // 输出:false(NaN 不等于自身)
console.log(isNaN("abc"));       // 输出:true(字符串转数字失败)
console.log(Number.isNaN("abc")); // 输出:false("abc" 不是 NaN 本身)
console.log(Number.isInteger(3));  // 输出:true
console.log(Number.isInteger(3.5)); // 输出:false

常量属性

Number 对象自带边界常量,做溢出判断或精度判断时常用:

console.log(Number.MAX_VALUE);         // 输出:1.7976931348623157e+308
console.log(Number.MIN_VALUE);         // 输出:5e-324(最小的正数)
console.log(Number.POSITIVE_INFINITY); // 输出:Infinity
console.log(Number.NEGATIVE_INFINITY); // 输出:-Infinity
console.log(Number.MAX_SAFE_INTEGER);  // 输出:9007199254740991

小结

Number 对象是数字的"工具箱":typeof 可区分基本类型与包装对象;格式化用 toFixed/toPrecision,进制转换用 toString(radix),字符串转数字按需选 Number/parseInt/parseFloat;判断 NaN 用 Number.isNaN,边界值查 MAX_VALUE 与 MAX_SAFE_INTEGER。涉及金额时建议换算成整数运算,避开浮点误差。

笔记加载中…