當評估求值需要分數精度的運算式時,可使用浮點數(也稱為實數)。
包含小數部分的數值稱為實數,例如,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
類型可能會導致精度損失。