webForumDet fria alternativet

Problem med float

2 svar · 357 visningar · startad av JulleBoy

JulleBoyMedlem sedan jan. 200450 inlägg
#1

Felmeddelande:
possible loss of precision
found: double
required: float

this.vikt = vikt + liter * 0.8;

Det blir fel vid "*", både vikt och liter är av typen float så varför blir det fel?

JulleBoyMedlem sedan jan. 200450 inlägg
#2

Det löste man genom följande:

this.vikt = (float) vikt + liter * 0.8;
LimeMedlem sedan sep. 2001961 inlägg
#3

JulleBoy skrev:

Felmeddelande:
possible loss of precision
found: double
required: float

this.vikt = vikt + liter * 0.8;

Det blir fel vid "*", både vikt och liter är av typen float så varför blir det fel?

För att svara på din fråga:

Antar att du har deklarerat någåt sånthär

float vikt;

setVikt(float vikt, float liter)
{

this.vikt = vikt + liter* 0.8;
}

Som du säger så är vikt och liter deklarerat som float MEN inte 0.8.

0.8 som du har skrivit det är en double eftersom det är grundatomären för decimaltal i java.

Du borde skriva this.vikt = vikt + liter * 0.8f;

Notera det lilla f:et jag skrivit efter 0.8. Det markerar att talet skall betraktas som en float. Om du använder dig av din lösning blir det fel eftersom liter först downcastas till en double och sedan konverteras till en float.

130 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)