2013-02-24 118 views
7

我對編程非常陌生。我有以下代碼:爲什麼當我使用float時,java迫使我添加f?

float f = 18.45f; 

這工作正常。如果我更改到:

float f = 18.45; 

java的說這是錯誤:

error: possible loss of precision 

但其在double方面可選。但在long我再次面臨同樣的問題。

爲什麼java強迫我這樣做,但不是double

+1

'double'是浮點數的默認類型。 '18.45'隱含地是一個'double' – toniedzwiedz 2013-02-24 17:01:46

+0

更大的問題是,爲什麼當double更好時,甚至使用float,因爲它更精確(Java正在警告你)?唯一一次我使用浮點數的時候,一個方法參數需要float才能正確的重載。 – 2013-02-24 17:02:23

+2

這是爲了讓人們不會經常來Stack Overflow來問爲什麼浮點乘法在Java中被破壞。 – 2013-02-24 17:03:35

回答

20

在Java中,18.45是一個double數據類型,其中包含64位。數據類型只能保存到32位數據類型float。增加額外的f使它成爲一個浮點數(浮點數字)。

有關更多詳細信息,請參見Primitive Data Types

+2

+1超級音速的正確答案。 :) – 2013-02-24 17:03:23

+0

謝謝大家,爲了贊成票:) – 2013-02-24 17:08:24

+4

真正令人驚訝的不是回票的數量,而是這是唯一的答案。我的意思是,有什麼可能?它通常需要一打相同的帖子來回答這樣的問題。 – toniedzwiedz 2013-02-24 17:12:24

相關問題