[C] - Conversion d'un float en chaine de caractères -> Problème de l'arrondi
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

[C] - Conversion d'un float en chaine de caractères -> Problème de l'arrondi



  1. #1
    jorg1n

    [C] - Conversion d'un float en chaine de caractères -> Problème de l'arrondi


    ------

    Bonjour,

    voila mon problème, je travaille avec un PIC18F, je code en C (compilateur C18), et dans mon application, a un moment, je convertis un float en chaine de caractère :
    Code:
    float ValFloatDisp = 650.800;
    char DATAtoLCD[30];
    
    ftoa (ValFloatDisp,DATAtoLCD,1);
    Voila la fonction ftoa:
    Code:
    void ftoa(float f,char* String,char Places){
    long power = 0;
    char n = 0,i = 0;
        power=1;
        while(power*10<=f)
            power*=10;
        while(power>=1){
            n=(char)(f/power);
            f-=n*power;
            power/=10;
            *String++=n+'0';
        }
        *String++='.';
        for(i=0;i<Places;i++){
            f*=10;
            n=(char)f;
            f-=n;
            *String++=n+'0';
        }
        *String=0;
    }
    et dans mon cas, je souhaiterai afficher: '6''5''0''.''8'
    Mais il m'affiche : '6''5''0''.''7'

    car a un moment dans la conversion, il trouve ... .799989 au lieu de ... .80000

    Je ne sais pas comment faire pour régler ce problème...
    Existe t'il une fonction ftoa "mieux" écrite ?
    Ou que me conseillez vous de faire?

    Merci d'avance
    Bonne soirée a tous

    -----

  2. #2
    sdec25

    Re : [C] - Conversion d'un float en chaine de caractères -> Problème de l'arrondi

    Salut,
    car a un moment dans la conversion
    A quel moment ? Tu peux détailler les calculs ?
    Il y a la fonction sprintf qui permet de formater les nombres avec un certain nombre de décimales.
    Sinon, si tu veux arrondir un nombre au dixième près : nb+0.05 puis tu le convertis.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/07/2009, 12h57
  2. Chaine de caractères en C
    Par invite953f8104 dans le forum Électronique
    Réponses: 8
    Dernier message: 03/03/2009, 20h28
  3. [C]-Conversion Int -> Char, Float -> Char, ...
    Par jorg1n dans le forum Électronique
    Réponses: 2
    Dernier message: 25/06/2008, 11h05
  4. PIC : Chaine de caractères
    Par Toufinet dans le forum Électronique
    Réponses: 2
    Dernier message: 24/05/2006, 17h49
  5. PIC: Gestion de chaîne de caractères.
    Par invite4c7a167b dans le forum Électronique
    Réponses: 1
    Dernier message: 24/05/2004, 14h13
Découvrez nos comparatifs produits sur l'informatique et les technologies.