sprintf(buffer,"floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
warum sollte das nicht gehen?
hier ist das komma falsch, muss ein punkt sein:
du kannst natürlich auch mit der kirch ums dorf:
Code:
void LcdDouble(double d)
{
unsigned long i,z,l=d;
char b=0;
if(d==0){printf("0");return;}
else if(d<0){printf("-");l*=-1;}
// ganzzahlanteil
for(i=1000000000;;i/=10)
{
if((z=l/i)>0)b=1;
if(b)printf("%c",'0'+z);
l-=z*i;
if(i==1)break;
}
// nachkommastellen
printf(",");
l=(long)((d-(long)d)*10000000);
for(i=1000000;;i/=10)
{
if((z=l/i)>0)b=1;
if(b)printf("%c",'0'+z);
l-=z*i;
if(i==1)break;
}
}
die funktion hat natürlich ihre grenzen. sehr kleine oder sehr grosse floats werden nicht korrekt dargestellt. ist nur als kleines beispiel zu betrachten.
gruesse
Lesezeichen