我對編程非常陌生。我有以下代碼:爲什麼當我使用float時,java迫使我添加f?
float f = 18.45f;
這工作正常。如果我更改到:
float f = 18.45;
java的說這是錯誤:
error: possible loss of precision
但其在double
方面可選。但在long
我再次面臨同樣的問題。
爲什麼java強迫我這樣做,但不是double
?
我對編程非常陌生。我有以下代碼:爲什麼當我使用float時,java迫使我添加f?
float f = 18.45f;
這工作正常。如果我更改到:
float f = 18.45;
java的說這是錯誤:
error: possible loss of precision
但其在double
方面可選。但在long
我再次面臨同樣的問題。
爲什麼java強迫我這樣做,但不是double
?
在Java中,18.45
是一個double
數據類型,其中包含64位。數據類型只能保存到32位數據類型float
。增加額外的f
使它成爲一個浮點數(浮點數字)。
有關更多詳細信息,請參見Primitive Data Types。
+1超級音速的正確答案。 :) – 2013-02-24 17:03:23
謝謝大家,爲了贊成票:) – 2013-02-24 17:08:24
真正令人驚訝的不是回票的數量,而是這是唯一的答案。我的意思是,有什麼可能?它通常需要一打相同的帖子來回答這樣的問題。 – toniedzwiedz 2013-02-24 17:12:24
'double'是浮點數的默認類型。 '18.45'隱含地是一個'double' – toniedzwiedz 2013-02-24 17:01:46
更大的問題是,爲什麼當double更好時,甚至使用float,因爲它更精確(Java正在警告你)?唯一一次我使用浮點數的時候,一個方法參數需要float才能正確的重載。 – 2013-02-24 17:02:23
這是爲了讓人們不會經常來Stack Overflow來問爲什麼浮點乘法在Java中被破壞。 – 2013-02-24 17:03:35