Multiplication de flottants en C

Fermé
eric - 22 déc. 2009 à 20:33
{psycho.} Messages postés 101 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 4 septembre 2010 - 22 déc. 2009 à 22:27
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

2 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
22 déc. 2009 à 21:15
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
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 dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148 > eric
22 déc. 2009 à 21:51
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 dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017
22 déc. 2009 à 21:54
donc mon code est bon, alors d'où peut venir le problème?
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148 > eric
22 déc. 2009 à 22:08
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 dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017
22 déc. 2009 à 22:13
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 mardi 22 décembre 2009 Statut Membre Dernière intervention 4 septembre 2010 8
22 déc. 2009 à 22:27
Bonsoir,

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