javafloat和double的区别
发布时间:2025-05-21 16:59:32 发布人:远客网络
一、javafloat和double的区别
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。
浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加指数占8位-- float.
数符加尾数占48位,指数符加指数占16位-- double.
知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是你想知道的数值范围。
对编程人员来说,double和 float的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,java语言中数学函数名称double和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)
二、java中float和double的取值范围是什么
最小值:Float.MIN_VALUE=1.4E-45(2的-149次方)。
最大值:Float.MAX_VALUE=3.4028235E38(2的128次方-1)。
最小值:Double.MIN_VALUE=4.9E-324(2的-1074次方)。
最大值:Double.MAX_VALUE=1.7976931348623157E308(2的1024次方-1)。
二、IEEE754不是一个具体值,是IEEE二进位浮点数算术标准(IEEE Standard for Floating-Point Arithmetic)的标准编号,它规定了浮点数在计算机当中的存储方式以及算术标准等。
1、单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127;双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023。
2、约定小数点左边隐含有一位,通常这位数是1,所以上述单精度尾数长度实际为24(默认省略小数点左边的1则为23),双精度尾数长度实际为53(默认省略小数点左边的1则问53)。
符号位、指数位、尾数位。三种精度的浮点数各个部分位数如下:
标准规定了一些特殊值(零,无穷,非数字)的存储方式:
1、如果指数是0并且小数部分是0,这个数±0(和符号位相关,这就是上文说的原因)。
2、如果指数= 2^e- 1并且小数部分是0,这个数是±无穷大(同样和符号位相关)。
3、如果指数= 2^e- 1并且小数部分非0,这个数表示为不是一个数(NaN)。
三、java的基本数据类型有哪些
取值范围:-2,147,483,648~ 2,147,483,647
取值范围:-9223372036854775808~9223372036854775807
取值范围:'\u0000'~'\ufff'
任何数据类型的数组都需要 20个字节的内存空间,加上每一数组维数占 4个字节,再加上数据本身所占用的空间。数据所占用的内存空间可以用数据元数目乘上每个元素的大小加以计算。
例如,以 4个 2字节之 Integer数据元所组成的一维数组中的数据,占 8个字节。这 8个字节加上额外的 24个字节,使得这个数组所需总内存空间为 32个字节。
参考资料:百度百科——数据类型