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 :
Voila la fonction ftoa:Code:float ValFloatDisp = 650.800; char DATAtoLCD[30]; ftoa (ValFloatDisp,DATAtoLCD,1);
et dans mon cas, je souhaiterai afficher: '6''5''0''.''8'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; }
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
-----