Napisałem ten kod:
float b = 3.6;
i otrzymuję to:
Błąd: nierozwiązany problem z kompilacją: Niezgodność typów: nie można przekonwertować z podwójnego na zmiennoprzecinkowy
Czemu? Jaka jest definicja float
?
java
floating-point
t0mkaka
źródło
źródło
f
do literału”), podczas gdy inne pytanie dotyczy tego, dlaczego musisz dodaćf
. Chociaż są powiązane, nie jest to duplikat.Odpowiedzi:
W Javie, gdy wpiszesz liczbę dziesiętną as
3.6
, zostanie zinterpretowana jakodouble
.double
jest 64-bitową precyzją zmiennoprzecinkową IEEE 754, afloat
32-bitową precyzją zmiennoprzecinkową IEEE 754. Ponieważ afloat
jest mniej dokładny niż adouble
, konwersja nie może zostać wykonana niejawnie.Jeśli chcesz utworzyć zmiennoprzecinkowy, powinieneś zakończyć swój numer znakiem
f
(np .:)3.6f
.Więcej wyjaśnień można znaleźć w definicji pierwotnych typów danych w samouczku Java .
źródło
Zrób to
źródło
Chodzi o to, że liczby dziesiętne domyślnie podwajają się. A ponieważ double nie pasuje do float, musisz wyraźnie powiedzieć, że celowo definiujesz float. Więc idź z:
źródło
W JAVA wartości takie jak:
Zakłada się, że jest podwójne i nie jest zmienne .
Możesz także wykonać rzut, aby rozwiązać problem:
float b = (float) 3.5
;Inne rozwiązanie:
float b = 3.5f
;źródło