3 回答

TA貢獻1864條經(jīng)驗 獲得超6個贊
因為否則它默認(rèn)為double
,這是比更加常用的浮點類型float
。
根據(jù)Java語言規(guī)范的第3.10.2節(jié):
如果浮點文字后綴為ASCII字母F或f,則其類型為float。否則,其類型為double,并且可以選擇在其后綴ASCII字母D或d(第4.2.3節(jié))。
(我個人希望沒有默認(rèn)值,以便在所有情況下都清楚一點,但這是另一回事。)

TA貢獻1859條經(jīng)驗 獲得超6個贊
因為未加后綴的浮點文字是雙精度的,所以舍入意味著即使四舍五入到浮點和雙精度的小字面量也可以采用不同的值。在以下示例中可以看到:
float f = (float) 0.67;if(f == 0.67) System.out.print("yes");else System.out.print("no");
這將輸出no
,因為四舍五入為float時0.67的值與四舍五入為double時的值不同。另一方面:
float f = (float) 0.67;if(f == 0.67f) System.out.print("yes");else System.out.print("no");
…輸出yes
。
編輯
第二個例子:
if(0.67 == 0.67f) System.out.print("Equal");else System.out.print("Not Equal");

TA貢獻1812條經(jīng)驗 獲得超5個贊
有兩種浮點類型可以表示為例如100.0
。默認(rèn)值只能是一個。由于精度有限,因此float是一種非常專業(yè)的類型。正常情況是double,因此它是適當(dāng)?shù)哪J(rèn)值。
在現(xiàn)代處理器上,float和double具有相似的計算性能。使用浮點數(shù)的唯一情況是在要求有限精度的性能至關(guān)重要的情況下使用大型數(shù)組。使用浮點數(shù)會使一個緩存行中的浮點值的數(shù)量加倍。即使那樣,計算浮點數(shù)是否能為給定的計算提供足夠的精度仍然很少。
添加回答
舉報