当前位置: 首页 > Web前端 > HTML

为什么float的表示范围比long的大

时间:2023-03-28 19:02:57 HTML

很多人会有一个疑问,为什么一个float用来表示小数的表示范围比long大呢?●这次详细说说吧事情是长期的。说到这个话题,我们就要从计算机存储数字的位置说起。计算机存储数字的方式其实是:二进制二进制是计算机中最基本的数字存储方式。所有数字都以0和1为基础,用二进制数表示。计算机中的内存和处理器等硬件组件是基于二进制设计的。计算机将数字转换为二进制数,并以二进制形式存储在内存中。●十六进制:其实就是我们计数的时候进行数字的方式。十进制0123456二进制011011100101110●也就是说,我们的数字,包括其他内容,都会被转换成二进制形式存储起来●例子:○一个数字是6,转换成之后二进制,就变成了110○那么电脑存储的时候,实际存储的是110个单位。除了知道存储方式之外,我们还需要知道一个东西,就是计算机的存储单元数字称为一位(bit),每一个8位的二进制数称为一个字节(byte),通常表示为8个0和1的序列●字节(B),只是我们常用计算机中的一个存储单元,我们一般计算机都是按字节存储的●例子:○有一个数是0,二进制转换后为0,则占用一位○有一个数为1,二进制转换后为1,则占用一位也占一个bit○但是大家想一想,存储的时候占两个bit,但是不能存储在一起○放在一起是01还是10还是一个0和一个1?●所以,所有的数据存储都会按照自身来存储,也就是字节●也就是说,就是一个数,即使是一个位,存储的时候也会占用一个字节的位置。就是说:一个数是1,二进制后也是1,因为需要占用一个字节。这个1会变成00000001以○的形式存储,这样正好占一个字节位置●根据上面的说法,一个自身(字节)存储的最大范围是○11111111是255个数○但是我们还是考虑到正负数是有关系的,所以一个字节中肯定有一个位来表示正负○所以,其实就是-128~127之间的取值范围●问题是○那么如何存储-129或300的数字呢?不同的数字类型●既然一个字节只能存储-128~127范围内的数字,那么其他数字呢,不存储吗?●这个时候我们会讲到数字的存储方式●以Java或者C或者C++语言为例●byte○如果一个数字是用byte来定义的,就是告诉你的电脑,我要申请一个字节的位置来存放数据○那么电脑会分配一个字节给你存放当前的数据,所以你只能存放-128到127之间的数字Short○如果定义为shortAnumber是告诉你的电脑我要申请两个字节来存储数据。然后计算机会分配两个字节给你存放当前的数据。一个字节有8位,所以两个字节是16位○换句话说,如果数字1以字节的形式存储,那么它是00000001○如果数字1以短形式存储,那么它是0000000000000001○所以short存储数的最大范围是-32768到32767●int○同理,int也可以用来定义和存储一个数○int表示的数会占用四个字节,即32位.○long表示的数字会占用八个字节的位置,即64位。在编译器或编译器中,long的表示是不同的。我们上面提到的○long在java、c、c++中表示64位,即8个字节的位置。但是○long在javascript中,根据jsParser分析○long表示32个数,即占用4个字节。○取值范围为-2,147,483,648~2,147,483,647。好的。到目前为止,我们已经看到了存储了多长时间。说到浮点数,就该存储小数了。刚讲完整数。接下来,让我们谈谈小数。有两种方法可以在计算机中存储小数。1.定点表示定点表示是指将小数点固定在某一点位置方面,在定点表示的情况下通常采用用整数表示小数部分的方法,而位置小数点的位置固定在某个位置,比如小数点后一位或两位。●例如,如果小数点固定在第一位,则小数0.123可以表示为整数123。如果把小数点固定在第二位,就可以把小数0.123表示为整数1230。●这不是我们需要的,不用担心2.浮点表示●浮点表示其实就是用浮点数表示小数的方法●我们通常把它分为单精度浮点数和双精度浮点数。这是我们正在努力解决的问题,所以让我们详细解释一下。了解有关浮点数的更多信息1.单精度浮点数。单精度浮点数的存储占用4个字节,即32位。第一位代表符号,即正数和负数。第二至第九个8位用作指数。最后是尾数,占23位。范围约1.4E-45至3.4E+38,精度约7位有效数2.双精度浮点数○双精度浮点数存储占用8个字节,即64位○第一位代表符号○第二位到第十二位11位作为指数占用○最后一位是52位○表示范围大约是4.9E-324到1.8E+308,精度大约是15有效数字。结语●到此结束,我们准备准备●用JavaScript分析○设备中的long代表一个数字32,取值范围是-2,147,483,648到2,147,483,647○float代表一个32位的浮点数,因为指数加法,取值范围为1.4E-45~3.4E+38。我们会说float的取值范围会比long大