Langage C

Bonjour,

svp si qlq un puisse me dire pourquoi ce petit code donne: I=2.00000 au lieu de I=2.33333

#include<stdio.h>
#include<conio.h>
main()
{
float I;
I=((2*2*2)-(1*1*1))/3;
printf("I= %f",I);
getch();
}
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. parce que tu fais une division entiere...
    essaye ça
    I=(float) ((2*2*2)-(1*1*1))/ (float) 3; 
    
    0
    1. bonjour,
      en effet.
      merci.
      0
  2. de rien...
    n'oublie pas de metre en resolu ;)
    0
    1. Bonjour,

      Je me permets de compléter un peu...

      En C, 2 et 3 sont des entiers. Les opérations sur des entiers donnent un résultat entier. Ainsi 2 / 3 = 0.
      0 / 4 = 0
      1 / 4 = 0
      ...
      3 / 4 = 0
      4 / 4 = 1
      ...
      7 / 4 = 1
      8 / 4 = 2
      et ainsi de suite.

      Pour que le compilateur comprenne bien que 2 est un nombre flottant, il faut lui écrire 2.0f
      (On voit parfois 2.f )

      ainsi ton opération s'écrit :

      I=((2.0f*2.0f*2.0f)-(1.0f*1.0f*1.0f))/3.0f;

      Et là tout est clair pour le compilateur.

      Ils existent aussi les nombres flottants à double précision (les double) qui eux s'écrivent 1.0, 2.0 et évidemment 2.468476 si on veut.
      (on voit parfois 2. )

      Voilou, ^^

      M.
      0