回答
f
表示這是一個浮點型文字,而不是雙重文字(它會隱含地以其他方式)。它沒有我知道的特定技術名稱 - 我傾向於將其稱爲「字母后綴」如果我需要特別提及它,雖然這有點武斷!
例如:
float f = 3.14f; //Compiles
float f = 3.14; //Doesn't compile, because you're trying to put a double literal in a float without a cast.
你當然可以這樣做:
float f = (float)3.14;
......這樣達成足夠靠近同樣的事情,但F是表示一個整潔,更簡潔的方式它。
爲什麼雙重選擇作爲默認而不是浮動?那麼,現在雙精度浮點數的內存需求在99%的情況下並不是問題,它們提供的額外精度在很多情況下都是有益的,因此您可能會認爲這是合理的默認值。
請注意,您可以明確地顯示出十進制文本作爲雙放一個d
末也:
double d = 3.14d;
...但因爲它是一個雙精度值,無論如何,這沒有任何影響。有些人可能認爲它主張它更清楚你的字面意思是什麼,但是我個人認爲它只是混淆了代碼(除非你可能有很多浮點文字掛在旁邊,你想強調這個文字確實是一個雙精度,而f的省略不僅僅是一個bug。)
Java將爲float變量使用的默認Java類型將是double。因此,即使將任何變量聲明爲float,編譯器必須實際做的也是將一個double值賦值給一個float變量,這是不可能的。因此,要告訴編譯器將此值作爲浮點數處理,那'f'用來。
這是區分浮點數和雙精度數。後者沒有後綴。
是的,他們有:'雙'litterals後綴是'd'和'D'。但是你可以省略它們。 –
當您編寫1.0時,您是否打算將文字作爲浮點數還是雙精度浮點模糊不清。通過編寫1.0f,你告訴Java你打算將文字作爲一個浮點數,而使用1.0d指定它應該是一個double(如果你沒有明確指定,這也是默認值)。
downvote?真?令人印象深刻的...... –
不是我的失望,但是「這是不明確的,你是否打算字面是一個浮點數還是雙精度」是錯誤的 - 在JLS中它表示默認情況下它是雙倍的,所以在那裏沒有任何含糊。 – berry120
正確。 「我的答案更新了 –
您需要將'f'放在末尾,否則Java會假設其爲double。
這意味着它是一個single precision floating point文字而不是double precision。否則,您必須編寫float n = (float)2.99944323200023;
才能將雙精度轉換爲單精度。
從Oracle Java Tutorial, section Primitive Data Types下浮點文本
甲浮點文字的類型爲float如果它與字母F或f結束;否則它的類型是雙重的,並且可以選擇以字母D或d結尾。
如果f
最終沒有被精簡,則該值被認爲是double
。 和double
導致內存中的字節數多於float
。
在Java中,當您鍵入十進制數字作爲3.6
時,其解釋爲double
。 double
是一個64位精度IEEE 754浮點,而float
是一個32位精度IEEE 754浮點。由於float
不如double
精確,轉換不能隱式執行。
如果您想創建一個浮點數,您應該以f
(即:3.6f
)結束您的數字。請參閱primitive data types definition of the Java tutorial。
- 1. 爲什麼有些人在變量的末尾附加f?
- 2. Java:爲什麼你需要在浮點數字中指定'f'?
- 3. Crystal Reports爲什麼在字母'f'之後添加字母'i'?
- 4. 爲什麼在c中定義常量的末尾使用'e0'?
- 5. ' - %>'(減號)在ERb序列末尾使用' - '(減號)的意義是什麼
- 6. 字典末尾的()是什麼?
- 7. 爲什麼Android在套接字的末尾發送奇怪的符號? ()
- 8. 什麼在類名末尾的角度括號的符號是什麼意思?
- 9. 刪除單詞末尾的字母
- 10. 爲什麼字符串末尾的'\ b'不起作用?
- 11. 爲什麼我在變量的末尾有隨機字符串?
- 12. 爲什麼在浮點類型字段中的'f'在計算後被移除
- 13. 爲什麼浮點數只有在整數時纔會拖尾?
- 14. [數字] -F出現在字符串的末尾?
- 15. R:僅在字符串末尾的gsub標點符號
- 16. 在字母數字字符串末尾的javascript增量數字
- 17. 符號(+)在WHERE語句末尾是什麼意思?
- 18. 如何使用.htaccess在URL末尾刪除?fontstyle = f-smaller?
- 19. 爲什麼SQL忽略字符串末尾的額外空格?
- 20. 從字符串末尾刪除^符號
- 21. 字符串末尾的增量編號
- 22. 刪除字符串末尾的逗號
- 23. 如何在字符串的末尾添加字母/短語?
- 24. 爲什麼在集合初始值設定項的末尾有一個逗號?
- 25. 命名約定:爲什麼Array#delete在末尾沒有感嘆號?
- 26. 爲什麼浮點異常?
- 27. Javascript:如何從字符串末尾去除標點符號
- 28. R:刪除字母數字字符串末尾的零字
- 29. 爲什麼我會在字符串末尾添加額外的字符?
- 30. 爲什麼mcrypt_encrypt()將二進制字符放在我的字符串末尾?
「F」表示它所附加的文字數值是一個浮點值。這是編譯器的必要信息,如果不存在則可能導致錯誤,或者編譯器不正確地解釋編號。 – ScoPi
@ScoPi我在一個程序中試過了它,它將它舍入到5個小數位。據我所知,一個浮點數不是。具有10^-38至10^38的範圍。 – crvineeth99
@ crvineeth99該範圍內的少量不同值可以用浮點數表示。從理論上講,在浮動中存在約43億個不同值的空間,但範圍「10^-38到10^38」具有無窮大的不同值。 – Esailija