C++ probleme entre les float et int - arrondis

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.