JavaScript 标准库之 Number 对象详解

JavaScript 标准库之 Number 对象详解

jstutorial Javascript tutorial book jstutorial 项目地址: https://gitcode.com/gh_mirrors/js/jstutorial

概述

在 JavaScript 中,Number 对象是处理数值数据的重要工具。它既可以作为构造函数创建数值对象,也可以作为工具函数进行类型转换。理解 Number 对象的特性和方法对于处理数字运算和转换至关重要。

Number 对象的基本使用

构造函数模式

当使用 new 操作符调用 Number 构造函数时,它会创建一个 Number 对象实例:

let numObj = new Number(10);
console.log(typeof numObj); // "object"

需要注意的是,直接使用 Number 构造函数创建的数值对象与原始数值类型是不同的。

工具函数模式

作为工具函数使用时,Number() 可以将其他类型的值转换为数值:

console.log(Number(true));  // 1
console.log(Number("123")); // 123
console.log(Number("abc")); // NaN

这种转换行为在处理用户输入或数据类型转换时非常有用。

Number 对象的静态属性

Number 对象提供了一系列静态属性,表示 JavaScript 中的特殊数值和范围值:

  1. 无限值表示

    • Number.POSITIVE_INFINITY: 正无穷大 (Infinity)
    • Number.NEGATIVE_INFINITY: 负无穷大 (-Infinity)
  2. 非数值表示

    • Number.NaN: 表示"非数字"的特殊值
  3. 数值范围限制

    • Number.MAX_VALUE: JavaScript 能表示的最大正数 (~1.79e+308)
    • Number.MIN_VALUE: JavaScript 能表示的最小正数 (~5e-324)
  4. 安全整数范围

    • Number.MAX_SAFE_INTEGER: 能精确表示的最大整数 (2^53 - 1)
    • Number.MIN_SAFE_INTEGER: 能精确表示的最小整数 -(2^53 - 1)

这些属性在数值计算和范围检查时非常有用,特别是在处理极大或极小的数值时。

Number 对象的实例方法

toString() - 数值转字符串

toString() 方法可以将数值转换为字符串,并可指定进制:

let num = 15;
console.log(num.toString());    // "15" (默认十进制)
console.log(num.toString(2));    // "1111" (二进制)
console.log(num.toString(8));    // "17" (八进制)
console.log(num.toString(16));   // "f" (十六进制)

使用技巧

  • 直接对整数调用时,需要用括号包裹或添加额外小数点
  • 小数也可以直接调用此方法

toFixed() - 固定小数位数

toFixed() 方法将数值转换为指定位数小数的字符串表示:

let pi = 3.1415926;
console.log(pi.toFixed(2));  // "3.14"
console.log(pi.toFixed(4));  // "3.1416" (自动四舍五入)

注意事项

  • 参数范围应在 0-20 之间
  • 对于整数也需要用括号包裹调用

toExponential() - 科学计数法表示

toExponential() 将数值转换为科学计数法形式的字符串:

let largeNum = 123456;
console.log(largeNum.toExponential());  // "1.23456e+5"
console.log(largeNum.toExponential(2)); // "1.23e+5"

toPrecision() - 指定有效数字

toPrecision() 方法返回指定位数有效数字的字符串表示:

let num = 123.456;
console.log(num.toPrecision(4)); // "123.5"
console.log(num.toPrecision(2)); // "1.2e+2"

注意:由于浮点数精度问题,四舍五入结果可能不如预期精确。

扩展 Number 原型的方法

我们可以通过扩展 Number.prototype 来为所有数值添加自定义方法:

// 添加加法方法
Number.prototype.add = function(x) {
  return this + x;
};

console.log((8).add(2)); // 10

// 添加范围生成方法
Number.prototype.range = function() {
  let result = [];
  for (let i = 0; i <= this; i++) {
    result.push(i);
  }
  return result;
};

console.log((5).range()); // [0, 1, 2, 3, 4, 5]

重要限制

  • 原始数值类型不能直接添加属性
  • 自定义方法必须通过 Number.prototype 添加

实际应用建议

  1. 数值转换:优先使用 Number() 函数进行显式类型转换
  2. 格式化输出:使用 toFixed() 或 toPrecision() 控制显示格式
  3. 进制转换:toString() 配合参数实现不同进制转换
  4. 安全计算:大整数运算时注意 MAX_SAFE_INTEGER 限制

理解并熟练运用 Number 对象的各种特性,能够帮助开发者更好地处理 JavaScript 中的数值运算和转换需求。

jstutorial Javascript tutorial book jstutorial 项目地址: https://gitcode.com/gh_mirrors/js/jstutorial

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴策峥Homer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值