Hi,
leider habe ich meinen Beitrag von heute früh versehentlich kaputteditiert. Also noch einmal rekonstruiert:
Wenn Du viel Flash übrig hast, kannst die sprintf(..) oder dtostrf(..) benutzen.
Ansonsten erweitere einfach Dein jetziges Programm: Gehe bei den Nachkommestellen identisch vor. Wenn die float Variable negativ ist, gib vorher ein Minuszeichen aus und wandle sie in eine positive Zahl um. Subtrahiere von der positiven float Variablen zunächst ihren ganzzahligen Anteil und gib den aus. Multipliziere dann den verbliebenen Wert mit 10, so dass die erste Nachkommstelle zur Vorkommastelle wird. Usw.
Hier ein Beispiel für einen Wert f vom Typ float unter der Voraussetzung, dass 0<=f<1.0 (also der ganzzahlige Anteil schon subtrahiert ist):
Wenn Du von Anfang an weißt, dass Du n Nachkommastellen ausgeben willst, dann multipliziere einfach die Variable f (mit dem o.g. Wertebereich) mit 10**n, nimm den ganzzahligen Anteil und stecke den in Deine Funktion zur Anzeige von Integern -- die benötigt keine float Arithmetik und ist daher effizienter als mein Beispiel.Code:float f= 0.1234567; // f>=0 && f<1.0 (hier nur ein Beispiel!) unsigned char prec=6; // Anzahl der gewünscht. Stellen (<=9) unsigned char string[10]; // String für Ausgabe: max. 9 Ziffern + '\x0' unsigned char *p_string; // Zeiger p_string=string; while (prec--) { unsigned char uchar; f*=10.; // mal 10., erste Dezimalstelle rückt in Vorkommpos. uchar=(unsigned char)((unsigned int)f); // extrahiere Vorkommap. f-=(float)uchar; // *p_string++=uchar+'0'; // in ASCII umwandeln und einfügen }; *p_string=0; // String terminieren
Gruß
Fred
Lesezeichen