www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC-C: Aus float mach string, wie?


Autor: Günter Netzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wiederhole mal den Betreff: PIC-C: Aus float mach string, wie?

Hab ich da eine Lösung übersehen?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Günter Netzer (Gast)

>Ich wiederhole mal den Betreff: PIC-C: Aus float mach string, wie?
>Hab ich da eine Lösung übersehen?

Festkommaarithmetik

MFG
Falk

Autor: I_ H. (i_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Logarithmus zur Basis 10 berechnen, abrunden(log) als Exponent merken, 
und durch 10^exponent teilen =:x. Dann floor(x) ausgeben, komma, 
floor((x-floor(x))*10), usw. also wie bei int.
Wenn du eh schon viel float brauchst kannst du das direkt rechnen, 
ansonsten auf das Darstellungsformat vom float anpassen.

Autor: Günter Netzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genial! Danke für eure Antworten!

Autor: jimjack jimjack (jimjack)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
atof()?

Autor: Günter Netzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
atof wandelt string in double(float)

ich will aber float -> string. Beim mega16 geht das mit sprintf.

Der C18-Compiler für PIC kennt aber den f-Spezifiziere bei sprintf 
nicht.


Ich hoffe nur, dass ich mit dem Dynamikbereich meiner 
Floatzahlen(+/-0,00001 bis +/-120000) den oben empfohlenen Weg der 
Festkommarithmetik gehen kann.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Günter Netzer (Gast)

>Ich hoffe nur, dass ich mit dem Dynamikbereich meiner
>Floatzahlen(+/-0,00001 bis +/-120000) den oben empfohlenen Weg der
>Festkommarithmetik gehen kann.

Eine einfache Rechnung sollte das klären.

+-120000 auf 0,00001 aufgelöst sind 24.000.000.000, Vierundzwanzig 
Milliarden Zähler. Da muss man auf 64 Bit INT gehen. Wen man eine 
Zehnerstelle Auflösung insparen kann reichen 32 Bit.
Aber Vorsicht bei den Zwischenergebnissen! Overflow und Co lauern 
überall.

MFG
Falk

Autor: I_ H. (i_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal noch eine Anmerkung - ein float hat nix mit fixpoint zu tun, 
fixpoint ist nunmal gerade kein floating point.

Autor: 2920 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die wichtigste Frage ist : Wieviele signifikanten Stellen will man 
zeigen, resp wieviele Stellen hat man. Mehr als 4 Stellen hat man 
selten.

Autor: Günter Netzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, meine Euphorie hat sich etwas gelegt, da ich die 
Festkommaarithmetik, bei dem Werteumfang, mit meinen 
Heimlehrgangsprogrammierer-Kenntnissen nicht hinbekommen werde. Es 
werden 6 signifikanten Stellen(120000 Digit) benötigt.

Beim mega16 war alles einfach mit sprintf zu lösen. Aber es gibt gute 
Gründe, das Projekt auf einen PIC18 umzuschreiben.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2920 wrote:
> Die wichtigste Frage ist : Wieviele signifikanten Stellen will man
> zeigen, resp wieviele Stellen hat man. Mehr als 4 Stellen hat man
> selten.


Zeigen ist zuwenig.
Die Frage ist: Wieviele signifikante Stellen brauche ich, damit
meine Berechnung noch ein richtiges Ergebnis liefert.

Je nachdem, was berechnet wird, können auch die ~15 signifikanten
Stellen, die man mit einem 8-Byte double bekommt zuwenig sein.
Dann heist es die Berechnung analysieren und ev. umstellen
bzw. auf andere Berechnungsmethoden ausweichen.
Und nein: das ist nicht nur in esoterischen Fällen so. Das
können ganz einfache und eigentlich simple Problemstellungen
sein.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.