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. 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
    1. de rien...
      n'oublie pas de metre en resolu ;)
      0
      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