Gast
#684692
Ich wiederhole mal den Betreff: PIC-C: Aus float mach string, wie? Hab ich da eine Lösung übersehen?
|
Anzeige
|
PIC-C: Aus float mach string, wie?
Gast
#684692
Ich wiederhole mal den Betreff: PIC-C: Aus float mach string, wie? Hab ich da eine Lösung übersehen? @ 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 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.
Gast
#684715
Genial! Danke für eure Antworten! atof()?
Gast
#685010
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. @ 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 Mal noch eine Anmerkung - ein float hat nix mit fixpoint zu tun, fixpoint ist nunmal gerade kein floating point.
Gast
#685075
Die wichtigste Frage ist : Wieviele signifikanten Stellen will man zeigen, resp wieviele Stellen hat man. Mehr als 4 Stellen hat man selten.
Gast
#685105
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. 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 schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|