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

参考技术B

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类。



参考技术D

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的取值范围是啥?的主要内容,如果未能解决你的问题,请参考以下文章

java float跟double类型区别

JAVA中float与double的区

Java中double的取值范围为1.79E308。E308是啥意思?

c++中,float double区别

double和float的区别是啥?

Java中float浮点型变量不加F报错情况