Number对象
源码下载包装对象
谈到数字涉及到两个概念一个是Number数据类型,另一个是Number数字对象。
一般处理数字问题,声明数字变量就像第33行代码一样直接赋值
32 //比较Number、new Number区别 33 let m = 10; 34 let n = Number(10); 35 let w = new Number(10); 36 37 document.write(typeof m);//返回m数据类型 number 38 document.write("<br>"); 39 document.write(typeof n);//返回n数据类型 number 40 document.write("<br>"); 41 document.write(typeof w);//返回w数据类型 object 42 document.write("<br>"); 43 44 document.write(m == n);//m == n返回结果true 45 document.write("<br>"); 46 document.write(m === n);//m == n返回结果true 47 document.write("<br>"); 48 49 document.write(m == w);//m == n返回结果true 50 document.write("<br>"); 51 document.write(m === w);//m == n返回结果false 52 document.write("<br>");
进制转化案例
下面一段代码主要使用数字对象的toString方法在页面上显示十进制数的二进制和十六进制形式。
9 //x执行方法toString返回二进制形式1010 10 let a = x.toString(2); 11 //y执行方法toString返回十六进制形式FF 12 let b = y.toString(16); 13 document.write(a+"<br>"); 14 document.write(b+"<br>"); 15 //typeof b测试b的数据类型,返回string 16 document.write(typeof b + "<br>");
简单描述,toString(n)方法的作用是把一个数转化为n进制数,第16行代码通过typeof判断b的类型是string可以发现,实际上是把数字转化为字符串,比如十进制10对应的是二进制1010,那么当执行toString(2)返回的结果就是 一个字符串"1010"。
不管什么进制,那都是针对人类的书写系统而言,对于计算机而言,寄存器的状态要么是1要么是0,当程序中出现255的时候,对于计算机而言要么是按照数字来处理,根据数字存储的标准,初始化255的存储形式,
对于正整数计算机基本和数学中是一致的,直接数学计算得出255的二进制是
number对象的属性constructor
在Javascript语言中通过构造函数和操作符new创建的对象,都具有constructor属性,属性constructor的属性值就是本对象的构造函数。 当数字变量调用属性constructor时,解释器默认把数字转化为对象,自然可以返回数字对象的构造函数function Number() { [native code] }, Number()是Javascript语言本身自带的一个构造函数。
17 //x.constructor返回数字对象的constructor属性,function Number() { [native code] } 18 document.write(x.constructor); 19 document.write("<br>"); 20 21 //借助一个函数,学习constructor属性 22 function fun() { 23 let x = 11; 24 let y = 3; 25 let z = x+y; 26 } 27 var obj = new fun(); 28 //obj.constructor返回结果function fun() { let x = 11; let y = 3; let z = x+y; } 29 document.write(obj.constructor);
Number对象基本语法
- 一方面Number和Math一样是内置对象,可以直接使用,比如Number.MAX_VALUE直接返回Javascript支持的最大值1.7976931348623157e+308
- 自定义声明的数字变量,可以认为是number的实例对象,就是相当于类的构造函数通过new实例化后创建,Math对象不存在实例化,Number存在
Number对象属性
Number的MAX_VALUE、MIN_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY属性可以视为数字类型数据一个数据,类似12、35...这样的数据,只不过大小不是12、35...。
属性 | 含义 |
MAX_VALUE | 最大正数1.7976931348623157e+308 |
MIN_VALUE | 接近于0的最小正数5e-324 |
NaN | 无法表示数字 |
NEGATIVE_INFINITY | 负无穷 |
POSITIVE_INFINITY | 正无穷,超出MAX_VALUE |
constructor | 对象的构造函数 |
prototype | 原型 |
MAX_VALUE
浮点数的存储单元是64位,也就只说Javascript支持的极限数字有限制
内置对象Number的属性MAX_VALUE和内置对象Math的属性PI一样都是静态属性,可以直接使用,代表着一个值
-
应用举例
document.write(Number.MAX_VALUE); //返回1.7976931348623157e+308if(x < Number.MAX_VALUE){...} //判断变量x是否超出Javascript支持的最大正数,如果没有超出最大正数范围,则执行{}里面的语句,否则跳过,这在程序中是有实际应用的
MIN_VALUE
MIN_VALUE和MAX_VALUE同一样是静态属性,非Number实例属性, 按照IEEE754存储标准,浮点数不存在绝对的0,只能说0.0....01小数位至少有几个零时,认为这个数据为0,这是由浮点数在硬件的存储规则决定的,这里不细讲。 MIN_VALUE表示最小的正数,接近于0,但不等于0,当一个数小于MIN_VALUE的时候,Javascript会把它转为0。
-
应用举例
document.write(Number.MIN_VALUE); //返回5e-324if(x > Number.MIN_VALUE){...} //判断变量x是否大于MIN_VALUE
NAN
一般是计算失败时的返回值,比如
-
应用案例
- Math.sqrt(-2)//-2不符合数学规定,计算错误,返回NaN
Number对象方法
toString(n)
表示把一个数值转化为n进制的数,返回的结果是该进制下数值的字符串。
-
应用案例
- let a=3;a.toString(2)返回结果"10"
- let a=240;a.toString(16)返回结果"F0"
toString(n)
四舍五入保留有效数字,有效数字的参数为参数n,返回结果是字符串
-
应用案例
- let xx = 12.44;typeof xx.toFixed(1)返回结果"string"
- let xx = 12.44;;xx.toFixed(1)返回结果"12.4"