🎬 HoRain云小助手个人主页

 🔥 个人专栏: 《Linux 系列教程》《c语言教程

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

🔧 深入理解 Number 对象

1. 创建 Number 对象

2. 重要静态属性详解

3. 类型判断方法对比

4. 数值格式化方法

⚠️ 实用技巧与注意事项

💡 总结


img

JavaScript 的 Number对象是处理数值数据的基础,它既是原始数值的包装对象,也提供了丰富的属性和方法来处理数值操作。下面这个表格汇总了其核心特性,帮你快速建立整体认知。

特性类别

核心属性/方法

说明与典型用途

核心概念

原始数值与Number对象

原始数值(如 123)与 new Number(123)创建的对象不同,但JavaScript通常会自动转换 。

静态属性(常量)

Number.MAX_SAFE_INTEGER

JavaScript 中能精确表示的最大安全整数(2^53 - 1)。

Number.MIN_SAFE_INTEGER

JavaScript 中能精确表示的最小安全整数(- (2^53 - 1))。

Number.MAX_VALUE

能表示的最大正数 。

Number.MIN_VALUE

能表示的最接近0的正数 。

Number.EPSILON

表示1与大于1的最小浮点数之间的差值,常用于浮点数比较的容错判断 。

静态方法(类型判断)

Number.isFinite()

判断一个值是否为有限的数值 。

Number.isInteger()

判断一个值是否为整数 。

Number.isSafeInteger()

判断一个值是否在安全整数范围内 。

Number.isNaN()

严格判断一个值是否为 NaN,只有 NaN本身返回 true

实例方法(格式化转换)

toFixed(digits)

将数字格式化为指定小数位数的字符串,会进行四舍五入 。

toExponential(fractionDigits)

将数字转换为指数计数法表示的字符串 。

toPrecision(precision)

根据指定的有效数字位数来格式化数字,可能返回定点或指数表示法 。

toString(radix)

将数字转换为指定进制(radix)的字符串形式 。

🔧 深入理解 Number 对象

1. 创建 Number 对象

你可以通过两种主要方式创建 Number 对象:

  • 字面量方式(推荐):直接使用数字字面量,如 let num = 123;。这种方式简单高效,JavaScript 会在需要时自动将原始值临时包装为 Number 对象来调用方法 。

  • 构造函数方式:使用 new Number()创建真正的 Number 对象。需要注意的是,这种方式创建的是对象而非原始值,可能在比较时产生意外结果 。

let numLiteral = 123;        // 原始数值类型
let numObject = new Number(123); // Number 对象

console.log(typeof numLiteral);  // "number"
console.log(typeof numObject);   // "object"
console.log(numLiteral === numObject); // false,因为类型不同
2. 重要静态属性详解

Number 对象的静态属性提供了一系列重要的数值常量,定义了 JavaScript 中数值表示的边界 :

  • 安全整数范围Number.MAX_SAFE_INTEGER(9007199254740991)和 Number.MIN_SAFE_INTEGER定义了能够精确表示的整数范围。超出此范围的整数可能会失去精度 。

  • 特殊值Number.NaN表示"非数字"值;Number.POSITIVE_INFINITYNumber.NEGATIVE_INFINITY表示正负无穷大 。

3. 类型判断方法对比

ES6 引入的类型判断方法(如 Number.isNaN()Number.isFinite())比全局方法更严格,它们不会对参数进行类型转换 :

// 全局 isNaN() 会先尝试将参数转换为数字
isNaN("123abc"); // true,因为转换后是 NaN

// Number.isNaN() 不会进行类型转换
Number.isNaN("123abc"); // false,因为字符串本身不是 NaN

// 同样适用于 isFinite
isFinite("123"); // true,字符串被转换为数字
Number.isFinite("123"); // false,因为字符串不是数值类型
4. 数值格式化方法

Number 实例方法提供了灵活的数值格式化能力:

  • 控制小数位数toFixed()方法适用于需要固定小数位数的场景,如金额计算 。

let price = 19.956;
console.log(price.toFixed(2)); // "19.96"(四舍五入)
  • 科学计数法表示toExponential()适用于极大或极小的数值 。

let largeNum = 123456789;
console.log(largeNum.toExponential(2)); // "1.23e+8"
  • 有效数字控制toPrecision()可以限制数值的有效数字位数 。

let num = 123.456;
console.log(num.toPrecision(4)); // "123.5"

⚠️ 实用技巧与注意事项

  1. 浮点数精度问题:JavaScript 使用二进制浮点数,可能导致十进制运算出现精度误差。建议使用容差比较法 。

// 不推荐的直接比较
console.log(0.1 + 0.2 === 0.3); // false

// 推荐的容差比较
console.log(Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON); // true
  1. 数值转换的最佳实践

    • 字符串转数字时,使用 Number()进行严格转换,或使用 parseInt()/parseFloat()进行宽松解析 。

    • 使用 Number.isSafeInteger()检查大整数是否在安全范围内,必要时使用 BigInt类型 。

  2. NaN 的特殊处理NaN是 JavaScript 中唯一不等于自身的值。检测 NaN时应使用 Number.isNaN(),而非直接比较 。

💡 总结

Number 对象是 JavaScript 数值处理的基础,提供了从基本数值表示到高级格式化的全面功能。理解安全整数范围、浮点数精度特性以及正确的类型判断方法,对于编写可靠的数值计算代码至关重要。对于超出安全整数范围的计算需求,可以考虑使用 ES2020 引入的 BigInt类型来处理大整数 。

希望这份详细的指南能帮助你深入理解并有效运用 JavaScript Number 对象!

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐