上一节我们详细介绍了JS中对象的方法以及如何批量创建对象,本节我们开始学习JS中内置的对象——Number对象。
Number对象,顾名思义就是处理数值的对象(包括整数和小数)。
1. 创建Number对象的语法:
let n=new Number(val)//如果是非数字字符则转为NaN(not a number)。
2. 如何创建?
/* 完整的三种创建方式: */ let num1 = 123; // 字面量方式 - 原始值类型 let num2 = Number(456); // 函数调用方式 - 原始值类型 let num3 = new Number(789); // 构造函数方式 - Number对象类型
3. Number对象有哪些静态属性:
| 函数/内置变量 | 说明 |
|---|---|
Number.EPSILON | 1 与大于 1 的最小浮点数之间的差,约等于 2.220446049250313e-16 |
Number.MAX_SAFE_INTEGER | JavaScript 中最大的安全整数 (2^53 - 1),值为 9007199254740991 |
Number.MAX_VALUE | 能表示的最大正数,约为 1.7976931348623157e+308 |
Number.MIN_SAFE_INTEGER | JavaScript 中最小的安全整数 (-(2^53 - 1)),值为 -9007199254740991 |
Number.MIN_VALUE | 能表示的最小的正数(最接近 0 的正数),约为 5e-324 |
Number.NaN | 表示"非数字"的特殊值,与全局的 NaN 相同 |
Number.NEGATIVE_INFINITY | 表示负无穷大的特殊值,与全局的 -Infinity 相同 |
Number.POSITIVE_INFINITY | 表示正无穷大的特殊值,与全局的 Infinity 相同 |
Number.prototype | Number 对象的原型,用于向所有 Number 实例添加属性和方法 |
在开发时,最常用到的就是Number.MAX_SAFE_INTEGER(9007199254740991)和Number.MIN_SAFE_INTEGER(-9007199254740991)。原因在于JS使用IEEE 754双精度浮点数表示所有数字,这导致52位尾数只能精确表示2^53以内的整数,超出这个范围的整数会开始丢失精度。
console.log(9007199254740991 === 9007199254740991); // true 精度未丢失 console.log(9007199254740992 === 9007199254740992); // true 虽然判断相等但已不安全 console.log(9007199254740993 === 9007199254740993); // false 由于精度丢失,导致false
4. Number对象有哪些静态方法:
| 函数/内置变量 | 说明 |
|---|---|
Number.isNaN() | 判断传入的值是否是 NaN,比全局 isNaN() 更严格 |
Number.isFinite() | 判断传入的值是否是有穷数,不会强制转换参数 |
Number.isInteger() | 判断传入的值是否为整数 |
Number.isSafeInteger() | 判断传入的值是否为安全整数(在 -(2^53 - 1) 到 2^53 - 1 之间) |
Number.parseFloat() | 将字符串解析为浮点数,与全局 parseFloat() 相同 |
Number.parseInt() | 将字符串解析为整数,与全局 parseInt() 相同 |
这里也有很多常用函数,比如工作时,我们通常会使用Number.isNaN()来严格判断一个值是不是NaN,同时,我们会使用Number.parseFloat()和Number.parseInt()将用户输入的字符串转为整型或是浮点型。
/* Number静态方法案例 */
console.log(Number.isNaN(NaN));//Number.isNaN()判断值是否等于NaN。这里返回true
console.log(Number.parseInt('1234567'));//Number.parseInt()转字符串为整型。这里打印1234567
console.log(Number.parseFloat('3.1415926'));//Number.parseFloat()转字符串为浮点型。这里打印3.14159265. Number对象有哪些实例方法:
| 函数/内置变量 | 说明 |
|---|---|
toExponential() | 返回以指数表示法表示的数字的字符串形式 |
toFixed() | 返回使用定点表示法表示数字的字符串,可指定小数位数 |
toLocaleString() | 返回数字在特定语言环境下的表示字符串 |
toPrecision() | 返回以指定精度表示数字的字符串 |
toString() | 返回指定 Number 对象的字符串表示,可指定进制 |
valueOf() | 返回 Number 对象的原始数值 |
这里通常使用toString()来进行数字转二进制字符串。比如对于数字6来说,它的二进制(radix)是110,我们就可以通过toString()来进行操作。
const six=6 console.log(six.toString(2));//110
总结:本节我们主要介绍了JS中的Number对象,包括它的语法、定义、静态属性和方法、实例方法等,是JS必备的常用知识。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程