爲什麼你需要在浮點數字中指定一個後綴f
?Java:爲什麼你需要在浮點數字中指定'f'?
回答
因爲否則它默認爲double
,這是比float
更常用的浮點類型。
從Java Language Specification, section 3.10.2:
甲浮點文字的類型爲float如果它與ASCII字母F或f爲後綴;否則它的類型是雙精度型的,它可以選擇性地加上ASCII字母D或d(§4.2.3)。
(我個人寧願有沒有默認,使它在所有情況下都清楚,但是這是一個不同的問題。)
但是爲什麼然後有一個類型的減速如果它默認爲一個不同的類型?我知道double只是一個64位浮點數,但是這樣做有一些更深入的理由嗎? – stackoverflow
@stackoverflow:你是什麼意思? * literal *的類型與您使用的變量的類型有些獨立。例如,您可以使用「float」文字並將其分配給「double」變量。在大多數情況下,表達式的類型與使用它的上下文無關。 (有些情況下,泛型的類型被推斷出來,但這是一個特例。) –
@stackoverflow Java支持[縮小轉換](http://docs.oracle.com/javase/specs/jls/se7/html/jls- 5.html#jls-5.2)在將文字分配給基元時。這就是爲什麼你可以'float f = 1.0';儘管'1.0'是一個double。我想這是支持的,因爲它是明確的 - 例如與使用方法調用使用文字不同。 – McDowell
由於無後綴浮點文字是雙打,並圓整裝置,即使小的文字可以採取不同的值時,四捨五入浮法和雙。這可以在下面的例子中可以觀察到:
float f = (float) 0.67;
if(f == 0.67)
System.out.print("yes");
else
System.out.print("no");
這將輸出no
,因爲四捨五入到浮動四捨五入到兩倍時比它時0.67具有不同的值。另一方面:
float f = (float) 0.67;
if(f == 0.67f)
System.out.print("yes");
else
System.out.print("no");
…輸出yes
。
EDIT
第二個例子:
if(0.67 == 0.67f)
System.out.print("Equal");
else
System.out.print("Not Equal");
有跡象表明,可以表示爲例如兩個浮點類型100.0
。只有一個可能是默認值。由於其精度有限,浮球是一種非常特殊的類型。正常情況是雙倍的,所以它是合適的默認值。
在現代處理器上,float和double具有相似的計算性能。使用浮點數的唯一情況是在需要有限精度的性能危急情況下的大數組。使用float將適合一個緩存行的浮點值的數量加倍。即便如此,確定float是否爲給定的計算提供了足夠的精度並不是微不足道的。
感謝您的回覆 – stackoverflow
- 1. 爲什麼十六進制浮點數需要指定指數?
- 2. 爲什麼你需要指定WCF服務的端點地址?
- 3. 爲什麼你需要指定Java堆大小?
- 4. 爲什麼需要浮標?
- 5. 爲什麼你需要取消引用字符指針?
- 6. HTTP:你爲什麼需要指定主機名?
- 7. 爲什麼在浮點號末尾使用字母f?
- 8. Java - 爲什麼浮動需要cast或'f'後綴,而long卻不行?
- 9. 爲什麼你不需要在Java中創建對象?
- 10. 爲什麼你需要在java中拋出異常
- 11. 爲什麼我不需要在C#中指定類型參數?
- 12. 爲什麼VARCHAR需要長度指定?
- 13. 爲什麼F#集需要IComparable?
- 14. 爲什麼你要指定一個整數作爲C簽名?
- 15. Java將字符串轉換爲數字,僅在需要時才浮點數?
- 16. 有什麼要點<|在F#中?
- 17. 爲什麼在java中需要接口?
- 18. 爲什麼在android中定義paddingLeft時需要指定paddingRight?
- 19. 將浮點數乘以整數 - 是否需要「F」?
- 20. 爲什麼在浮點類型字段中的'f'在計算後被移除
- 21. 在php中爲什麼是浮點數>字符串或浮點數> int
- 22. 浮點數字中的「f」後綴
- 23. Java:爲什麼你需要構造函數來在父類中使用對象?
- 24. 爲什麼你需要編碼URL?
- 25. 爲什麼你需要計算渲染?
- 26. 爲什麼你需要一個Hyper-V?
- 27. 爲什麼你需要Gitosis或Gitolite?
- 28. 爲什麼你需要原型測試?
- 29. 爲什麼你需要重載方法?
- 30. 爲什麼JAVA需要構造函數?
因爲不然,它不會是_float_文字。 – SLaks
儘管它適用於C,但您可能會喜歡此浮點常量微妙測驗。我相信這五個問題中的每一個都可以在Java中完全相同。 http://blog.frama-c.com/index.php?post/2011/11/08/Floating-point-quiz –
[爲什麼f放在浮動值之後?](http:// stackoverflow。 com/questions/9748160/why-f-is-after-float-values) –