2013-02-24 14 views
7

Jestem bardzo nowy w programowaniu. Mam następujący kod:Dlaczego java zmusza mnie do dodania f, gdy używam float?

float f = 18.45f; 

to działa dobrze. Gdybym zmienić na:

float f = 18.45; 

java mówiąc to jako błąd:

error: possible loss of precision 

ale jego opcjonalne w kategoriach double. Ale znowu w long mam ten sam problem.

Dlaczego java zmusza mnie do tego, ale nie w przypadku z double?

+1

'double' jest domyślnym typem liczb zmiennoprzecinkowych. '18.45' jest domyślnie" podwójnym " – toniedzwiedz

+0

. Większym problemem jest to, dlaczego używasz float, gdy podwójne jest lepsze, ponieważ jest bardziej precyzyjne (jak ostrzega Cię Java)? Jedyny przypadek, w którym używam wartości zmiennoprzecinkowej, występuje wtedy, gdy parametr metody wymaga float dla właściwego przeciążenia. –

+2

Jest tak, aby ludzie nie przychodzili tak często do Stack Overflow, aby zapytać, dlaczego mnożenie float zostało przerwane w Javie. –

Odpowiedz

20

W języku Java 18.45 jest typem danych double, który ma 64-bitową. float Typ danych może zawierać tylko do 32-bitów. Dodanie dodatkowego f powoduje, że staje się float (literał float).

Aby uzyskać więcej informacji, patrz Primitive Data Types.

+2

+1 prawidłowa odpowiedź z super-dźwiękową prędkością. :) –

+0

Dziękuję wszystkim, za głosy w górę :) –

+4

Co jest naprawdę zaskakujące, to nie liczba głosów oddanych, ale fakt, że jest to jedyna odpowiedź. Mam na myśli, jakie są szanse? Zwykle potrzeba kilkunastu identycznych postów, aby odpowiedzieć na takie pytanie. – toniedzwiedz

Powiązane problemy