float to string

Gast #2813615
Lesenswert?
• ▲
▼
Ich möchte ein Gefühl für den Aufwand einer float=>string in z.B. printf 
bekommen. Ich habe schon in diversen libc-Implementierungen gesucht, 
diese sind - für einen der keine Ahnung hat, wie der Algorithmus 
überhaupt funktioniert - aber nur sehr schwer zu verstehen.
Kennt jemand eine übersichtliche Implementierung, oder kann mir jemand 
die prinzipielle Vorgehensweise erklären.
Gast
Lesenswert?
• ▲
▼
Nun, etwas anderes als den Original-Code oder den daraus erzeugten 
Assembler-Code wirst du dir nicht anschauen können. Wenn du daraus nicht 
schlau wirst... dann wirst du daraus nicht schlau ;)
Gast
Lesenswert?
• ▲
▼
Nachdenken und selber schreiben.

Hat im Moment vielleicht keinen Nutzen, aber später.
Erstens lernt man aus jeder erfolgreichen oder auch fehlgeschlagenen 
Implementierung (normalerweise ...).
Und zweitens sind solche Routinen in "bare metal" Projekten häufig von 
Nutzen. Ich habe z.B. selbstgeschriebene Routinen zur Wandlung von 16/32 
Bit integer zu String, die für UART-Debugzwecke häufig einsetze.
Das spart oft deutlich an Codegröße gegenüber der libc.
Moderator Persönliche Seite
Lesenswert?
• ▲
▼
Ansonsten gibt's Abhandlungen über sowas auf totem Baum.  Haben
unsere Vorfahren alles aufgeschrieben.

Hier zum Beispiel gibt's sowas:

http://www.amazon.de/Arithmetische-Algorithmen-Mikrorechentechnik-G%C3%BCnter-Jorke/dp/3341005153

Für meine erste avr-libc-Implementierung habe ich seinerzeit den
alten Unix-Sourcecode (V7) gewälzt.  Das Ergebnis kannst du dir
beispielsweise hier ansehen:

http://svn.savannah.nongnu.org/viewvc/trunk/avr-libc/libc/stdio/vfprintf.c?revision=191&root=avr-libc&view=markup

Inzwischen hat das allerdings Dmitry Xmelkov alles komplett
umgeschrieben, damit es effizienter wird.  Die Kernroutine seier
Konvertierung findest du hier:

http://svn.savannah.nongnu.org/viewvc/trunk/avr-libc/libc/stdlib/ftoa_engine.S?revision=2191&root=avr-libc&view=markup

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.