java中float和double的取值范围是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中float和double的取值范围是啥?相关的知识,希望对你有一定的参考价值。
java中基本类型float和long所占的空间是固定的,float是32bit,double是64bit。书上写的最大值和最小值都是IEEE754,请问这是什么意思?它有没有一个取值范围,如果有,具体是多少到多少?
float:4字节(32bit),IEEE 754. 取值范围:
[-3.40282346638528860e+38 , -1.40129846432481707e-45] ∪ [1.40129846432481707e-45 ~ 3.40282346638528860e+38] 。
double: 8字节(64bit) ,IEEE 754. 取值范围:
[-1.79769313486231570e+308,-4.94065645841246544e-324] ∪ [4.94065645841246544e-324,1.79769313486231570e+308] 。
扩展资料
基本数据类型的特点,位数,最大值和最小值。
1、
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1)
2、
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1)
3、
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方)
最大值:Long.MAX_VALUE=9223372036854775807 (2的63次方-1)
4、
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)
最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1)
5、
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)
最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)
参考资料:Java官网-Java教程
参考技术A一、两者的取值范围如下:
1、float:
最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)。
最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1)。
2、double:
最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)。
最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)。
二、IEEE754不是一个具体值,是IEEE二进位浮点数算术标准(IEEE Standard for Floating-Point Arithmetic)的标准编号,它规定了浮点数在计算机当中的存储方式以及算术标准等。
(一)IEEE754的规定:
1、单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127;双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023。
2、约定小数点左边隐含有一位,通常这位数是1,所以上述单精度尾数长度实际为24(默认省略小数点左边的1则为23),双精度尾数长度实际为53(默认省略小数点左边的1则问53)。
(二)IEEE754有三部分组成:
符号位、指数位、尾数位。三种精度的浮点数各个部分位数如下:
扩展资料:
IEEE754标准的特殊值:
标准规定了一些特殊值(零,无穷,非数字)的存储方式 :
1、如果 指数 是0 并且 小数部分 是0, 这个数±0 (和符号位相关,这就是上文说的原因) 。
2、如果 指数 = 2^e - 1并且 小数部分 是0, 这个数是 ±无穷大 (同样和符号位相关) 。
3、如果 指数 = 2^e - 1并且 小数部分 非0, 这个数表示为不是一个数(NaN)。
具体如下:
参考资料:
百度百科--IEEE 754
float:4字节(32bit),取值范围:
[-3.40282346638528860e+38 , -1.40129846432481707e-45] ∪ [1.40129846432481707e-45 ~ 3.40282346638528860e+38]
double: 8字节(64bit) ,取值范围:
[-1.79769313486231570e+308,-4.94065645841246544e-324] ∪ [4.94065645841246544e-324,1.79769313486231570e+308]
注: java中,e代表10的幂次。
扩展资料:
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
Java 的两大数据类型:内置数据类型与引用数据类型。
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
参考资料:百度百科_Java
参考技术C基本类型float占4个字节,二进制位数有32位,取值范围为[-3.40282346638528860e+38 , -1.40129846432481707e-45] ∪ [1.40129846432481707e-45 ~ 3.40282346638528860e+38]。
基本类型double占8个字节,二进制位数有64位,取值范围为[-1.79769313486231570e+308,-4.94065645841246544e-324] ∪ [4.94065645841246544e-324,1.79769313486231570e+308] 。
PS:其中e代表10的多少次方。
IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式)。
扩展资料:
Java有两种浮点数据类型,第一种float使用32 bit表示,对应单精度浮点数,运行速度相比double更快,占内存更小,但是当数值非常大或者非常小的时候会变得不精确。精度要求不高的时候可以使用float类型。double为64位表示,将浮点数赋给某个变量时,如果不字面值后面加f或者F,则默认为double类型。java.lang.Math中的函数都采用double类型。如果double和float都无法达到想要的精度,可以使用BigDecimal类。
java中float和double都是浮点型数据类型,它们的取值范围如下:
1、float
所占字节4字节(32bit),IEEE 754。
范围:[-3.40282346638528860e+38 , -1.40129846432481707e-45] ∪ [1.40129846432481707e-45 ~ 3.40282346638528860e+38] 。
2、double
所占字节8字节(64bit) ,IEEE 754。
范围: [-1.79769313486231570e+308,-4.94065645841246544e-324] ∪ [4.94065645841246544e-324,1.79769313486231570e+308] 。
IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。IEEE 754规定了四种表示浮点数值的方式:
单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,很少使用)与延伸双精确度(79比特以上,通常以80位实现)。只有32位模式有强制要求,其他都是选择性的。大部分编程语言都有提供IEEE浮点数格式与算术,但有些将其列为非必需的。
扩展资料
float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:
float:1bit(符号位)+8bits(指数位+23bits(尾数位)
double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)
在数学中,特别是在计算机相关的数字(浮点数)问题的表述中,有一个基本表达法:
value of floating-point = significand x base ^ exponent , with sign
译为中文表达即为:
(浮点)数值 = 尾数 × 底数 ^ 指数,(附加正负号)
所以,float的指数范围为-127~128,而double的指数范围为-1023~1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
参考资料来源:百度百科——浮点型数据
以上是关于java中float和double的取值范围是啥?的主要内容,如果未能解决你的问题,请参考以下文章