| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 
 | int len_real(double reel_d)
{
    int len = 0, intp;    // decp: partie entière
    double floatp;           // partie flottante
 
    floatp = reel_d - (int)reel_d;     // calcule la partie flottante
 
    // on calcule la partie entière (ici ça marche)
    decp = (int)(reel_d - floatp); 
 
    // Longueur de floatp
    while(floatp != 0.0)
    {
     floatp *= 10;      // exemple: 0.98765 devient 9.8765
     floatp -= (int)floatp;     // exemple: 9.8765 devient 0.8765
     len++;   
    }
   /* après on remarque que la boucle n'a pas bien marché,
      quand elle arrive à la phase où floatp == 5.0, la deuxième ligne donne un
      comportement bizarre, (int)floatp nous renvoie 4 à la place de 5 (la partie entière de 5.0)
    */
 
/* Jusqu'ici len contiendra le nombre de caractères qui representent la partie flottante*/
 
    len += len_int(intp); 
/* on ajoute le nombre de caractères de la partie entière avec la fonction len_int(int entier) que j'ai déjà déclaré*/
    len++; // et enfin on ajoute 1 pour la virgule
    return len;
} | 
Partager