Multiplication de flottants en C

eric -  
{psycho.} Messages postés 101 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un phénomène assez bizarre, j'ai crée une matrice de petits nombres réels, je multiplie tous les nombres de la matrice entre eux et ça ne me donne pas du tout le résultat de ma calculette, exemple:

eric@x11:~$ ./prog
3.34 1.23
1.56 2.74

le produit des éléments du tableau est 17.65
c'est supérieur à ce qu'indique la calculette et lorsque le tableau est plus gros j'obtiens des nombres bcp trop gros, à quoi cela peut être dû svp?

merci
A voir également:

2 réponses

loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
J'ai des doutes sur le résultat !!! ;-)
Phénomène ou programme bizarre ?
Pour, éventuellement, expliquer le phénomène, pourrait-on voir le programme ?
Bonne soirée.
0
eric
 
oui volontier, je te montre une portion du programme, je suis le 1er surpris :-( :

float a=0.0, b=1.0;
int i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
a += tab[i][j];
b *= tab[i][j];
}
}

c'est la boucle qui parcourt la matrice et stocke les résultats dans a et b, ensuite je fais un printf %.2f est là parfois j'ai des nombres énormes
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148 > eric
 
Sur ce code, je ne puis rien dire; mais si tu essayes quelque chose de plus simple, il n'y a pas de problème:
int main(void)
{
  float a = 3.34;
  float b = 1.23;
  float c = 1.56;
  float d = 2.74;
  printf ("%.2f\n", a*b*c*d);
  return 0;
}
donne évidemment 17,56 qui est un résultat correct.
Bonne continuation.
0
eric > loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention  
 
donc mon code est bon, alors d'où peut venir le problème?
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148 > eric
 
Ah non, je n'ai pas dit que ton code était bon; je dis simplement que, vu ce qui m'est montré, je ne puis rien en dire. En effet la code est incomplet, on n'y voit même pas la déclaration de 'tab' ou l'initialisation aux valeurs 3.34, 1.23 ...
0
eric > loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention  
 
pour l'addition mon code fonctionne à merveille mais pour la multiplication ça engendre des nombres trop gros.
J'ai une matrie initialisée avec de petits réels aléatoires et quand je fais la somme de tous les réels ça marche, avec le code que je t'ai donné a += ...mais au niveau de la multiplication b *= ...ça ne marche pas, ce n'est vraiment pas normal, de quoi cela peut il bien venir ....
0
{psycho.} Messages postés 101 Date d'inscription   Statut Membre Dernière intervention   8
 
Bonsoir,

Je plussoie Loupius, le code complet serait une bonne chose!
0