当评估求值需要分数精度的表达式时,可使用浮点数(也称为实数)。
包含小数部分的数值称为实数,例如,3.2
,0.114
,-1.19
等。Java支持浮点数格式。 Java使用IEEE 754浮点标准存储实数。
有两种类型的浮点类型,float
和double
,分别表示单精度和双精度数。
它们的宽度和范围如下所示:
名称 | 以位为单位的宽度 | 近似范围 |
---|---|---|
double | 64 | 4.9e-324 ~ 1.8e+308 |
float | 32 | 1.4e-045 ~ 3.4e+038 |
浮点数据类型
浮点数据类型使用32
位来存储浮点数。
浮点数也称为单精度浮点数。它可以表示一个小到1.4×10^-45
和大到3.4×10^38
的大小的实数。在该范围内它可以是正的或负的。
所有以f
或F
结尾的实数称为浮点文字。 浮点文本可以用以下两种格式表示:
- 十进制数字格式
- 科学计数法
浮点字面量
十进制数字格式的浮点字面量示例如下:
float f1 = 1F;
float f2 = 2.F;
float f3 = 3.0F;
float f4 = 4.51F;
float f5 = 5.0F;
float f6 = 56.78f;
在Java中,实数可以使用科学记数法表示为浮点字面量。在科学记数法中,数字32.5×10-1
被写为32.5E-1
。 作为浮点字面量,它可以写作32.5E-1F
或32.5E-1f
。
所有以下浮点字面量表示相同的实数42.5
:
4.25F
42.5E-1F
0.425E+1F
0.425E1F
0.0425E2F
0.0425e2F
4.25E0F
float
数据类型定义两个零:+0.0F
(或0.0F
)和-0.0F
。 +0.0F
和-0.0F
都被认为是相等的。float
数据类型定义了两个无穷大:正无穷大和负无穷大。未定义浮点的一些操作的结果。 例如,将0.0F
除以0.0F
是不确定的。
不确定的结果由NaN
(非数字)的float
数据类型的特殊值表示。
Java有一个Float
类,它定义了三个常量,分别表示正数无穷大,负无穷大和浮点数据类型的 NaN
。
下表列出了这三个浮点常量及其含义。
常量 | 含义 |
---|---|
Float.POSITIVE_INFINITY | float 类型的正无穷大 |
Float.NEGATIVE_INFINITY | float 类型的负无穷大 |
Float.NaN | 不是float类型的数值 |
Float.MAX_VALUE | 可以在float 变量中表示的最大正值。等于3.4 x 10^38 (约)。 |
Float.MIN_VALUE | 大于零的最小正值,可以在float 变量中表示。等于1.4×10^-45 。 |
所有整型类型(int
,long
,byte
,short
和char
)的值可以分配给float
数据类型的变量,而不使用显式强制转换。
在将float
值分配给任何整数数据类型int
,long
,byte
,short
或char
的变量之前,必须强制转换该值。
将int
和long
赋值给float
类型可能会导致精度损失。