float x = int/int :/

Status
Niet open voor verdere reacties.

CanTBeaTme

Banned
Lid geworden
25 jul 2006
Berichten
235
ik heb een variabel X en die is gelijk aan een int gedeelt door een int:

int a = 1;
int b = 2;

float x = a/b;

als ik nou : cout << x; doe , krijg ik de waarde 0
doe ik cout << a/b , krijg ik ook 0
doe ik cout <<(float) (a/b) krijg ik 0.5
doe ik cout << (float) (x) krijg ik nog steeds 0 !!!!!

hoe komt dit? en hoe verhelp ik dit?

en wat als ik met de float x wil gaan rekenen, als die dan 0 is kan ik er niks mee? maar ik weet niet of die 0 is omdat ik de output niet kan vertrouwen :/
 
het probleem is dat in C++ een deling van twee integers automatisch een integer wordt. uitleg:
Code:
float x = 1/3;
/* eerst wordt het rechterlid uitgevoerd -> 0.3333333333
maar dit moet van het type int zijn -> (truncated) -> 0
dit wordt dan in x opgeslaan -> x = 0;

Je idee om dit te omzeilen is correct, alleen op de verkeerde plaats toegepast.
Correcte code:
Code:
int a = 1;
int b = 3;
float x = a/float(b);
zo krijg je in het rechterlid niet langer een deling van 2 integers, maar van een integer en een float. Resultaattype: een float!

--Johan
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan