Salut
Mon prebleme peut se simplifier et se resumer a ca :
float a;
int b,c;
si je fais :
a=(b+c)/10;
J aurai alors un arrondi dans a;
si je fais :
a=b+c;
a=a/10;
j’aurai alors la valeur exacte.
C’est normal?
Salut
Mon prebleme peut se simplifier et se resumer a ca :
float a;
int b,c;
si je fais :
a=(b+c)/10;
J aurai alors un arrondi dans a;
si je fais :
a=b+c;
a=a/10;
j’aurai alors la valeur exacte.
C’est normal?
Oui.
a = (b + c) / 10 =>
<float> <- (<int> + <int>) /<int> -> applique la division entière
a = b + c =>
<float> <- <int> + <int> <- (float) (<int> + <int>)
a = a / 10 =>
<float> <- <float> / <int> -> applique la division normale
Pour ton problème, teste :
a = (b+c)/10.0f;
ok, merci
du coup j’ai d’autre questions sur les nombres.
si je dois multiplier deux int et que j’ai peur que le resultat soit trop grand, est ce que je peut faire ca :
<long>=<int>*<int>
ou est ce que ca risque de faire comme avec les float, de couper mon resultat.
et ca veut dire quoi le f dans 10.0f?
et un dernier truc:
j’ai besoin de diviser deux long.
comment faire?
parce que en faisant
<float>=<long>/<long>
je vais avoir le meme probleme que precedement.
10.0 = double, 10.0f = flottant.
Pour tes problèmes de divisions, utilises un cast surtout si ça doit aller dans un flottant après.
Pour la multiplication, <int>*<int> ça doit faire du <int> (en toute logique). Tu peux éventuellement caster en long l’un des deux.