js三进制计算机,JavaScript Number对象

Number对象

源码下载

包装对象

谈到数字涉及到两个概念一个是Number数据类型,另一个是Number数字对象。

一般处理数字问题,声明数字变量就像第33行代码一样直接赋值let m = 10;赋值为10,解释器会明白a是一个数字类型数据,具体说是整型。

Javascript语言内置了一个构造函数Number(),可以单独使用,可以和new操作符结合使用,如下第34行let n = Number(10);、

第35行let w = new Number(10);两种变量创建方式。使用typeof可以判断这三种方式创建的变量的数据类型,可以看出前两种声明方式

变量是数字类型,使用操作符的时候是对象类型。这时候可能大家会问数字变量是值类型数据,不是对象类型数据怎么会有方法和属性?本着万物皆对象的精神,Javascript语言或者说他的解释器

设置了一个自动转化机制,把原始类型包转为包装对象。具体来说就是如果使用直接赋值的方式let m = 10;声明一个变量,当浏览器js解释器阅读到let.toString(16)这样

利用符号点调用方法的时候,后自动把数字变量转化为对象,等方法调用结束后,内存中会销毁刚刚生成的对象,不会占用内存。这个过程是隐式进行的,如果你编写代码let w = new Number(10);,这就是告诉浏览器

你给我创建一个变量,类型是object,值是10。下面使用运算==和===的返回结果也可以看到,使用==的时候,m和w相等,使用===的时候,不相等。(使用===会比较类型和值两项,==仅仅比较值是否相等,至于是数字、字符串、对象不关心)。

32 //比较Number、new Number区别33 let m =10;34 let n = Number(10);35 let w =newNumber(10);36

37 document.write(typeof m);//返回m数据类型 number38 document.write("
");39 document.write(typeof n);//返回n数据类型 number40 document.write("
");41 document.write(typeof w);//返回w数据类型 object42 document.write("
");43

44 document.write(m == n);//m == n返回结果true45 document.write("
");46 document.write(m === n);//m == n返回结果true47 document.write("
");48

49 document.write(m == w);//m == n返回结果true50 document.write("
");51 document.write(m === w);//m == n返回结果false52 document.write("
");

进制转化案例

下面一段代码主要使用数字对象的toString方法在页面上显示十进制数的二进制和十六进制形式。

//x执行方法toString返回二进制形式101010 let a = x.toString(2);//y执行方法toString返回十六进制形式FF12 let b = y.toString(16);13 document.write(a+"
");14 document.write(b+"
");//typeof b测试b的数据类型,返回string16 document.write(typeof b +"
");

简单描述,toString(n)方法的作用是把一个数转化为n进制数,第16行代码通过typeof判断b的类型是string可以发现,实际上是把数字转化为字符串,比如十进制10对应的是二进制1010,那么当执行toString(2)返回的结果就是

一个字符串"1010"。

不管什么进制,那都是针对人类的书写系统而言,对于计算机而言,寄存器的状态要么是1要么是0,当程序中出现255的时候,对于计算机而言要么是按照数字来处理,根据数字存储的标准,初始化255的存储形式,

对于正整数计算机基本和数学中是一致的,直接数学计算得出255的二进制是1111111,浏览器初始化补全32为位,

凑够一个32位4个字节的存储单元就是000...0011111111(内存寄存器状态0是24位状态1是8位)。

要么把255视为字符串,按照字符存储标准,255是三个字符,比如按照UTF-8标准分别确定它们的二进制形式,2对应00110010,5对应00110101。

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("
");//借助一个函数,学习constructor属性functionfun() {

23 let x =11;24 let y =3;25 let z = x+y;varobj =newfun();//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+308

if(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-324

if(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"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值