Forum: Mikrocontroller und Digitale Elektronik Festkomma nach ASCII


von herman (Gast)


Lesenswert?

Guten Tag zusammen,

ich habe mich die öletzte Zeit mit Festkomma Darstellung beschäftigt, 
mir einen CORDIC für 16 Vorkommastellen und 48 Nachkommastellen 
geschrieben.

Nun brauche ich noch eine Funktion, welche mir der Reihe nach die 
Festkommazahl als ASCII Zeichen über z.B. putchar ausgibt.

Hierfür muss ich ja die Zahl mal 10^n (1000 z.B. für die 3. 
Nachkommastelle) und dann durch 2^48 teilen. Das Problem ist, dass ich 
bei 16 bit nicht mehr viel platz habe für die mal 10^n.

Gibt es da eine andere Möglichkeit? Wie würdet ihr das machen?

Gr

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Brauchst du alle 15 dezimal darstellbaren Nachkommastellen?

von Sebastian S. (amateur)


Lesenswert?

Wenn Du einen CORDIC für Deine Zahlen hast, sollten auch die dafür 
nötigen Rechenfunktionen vorhanden sein.

Was hast Du eigentlich vor?
Willst Du sämtliche Atome des Universums katalogisieren und an ihren 
Platz rücken?

von herman (Gast)


Lesenswert?

den CORDIC habe ich selber geschrieben.

ich will einfach nur ausprobieren. Bin halt auf dieses Problem gestoßen 
und frage mich jetz wie man das machen könnte.

Ja, die Idee nur die ersten paar Nachkommastellen auszugeben aber mit 15 
zu rechnen hatte ich auch schon.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

1) Vorkommastellen in gewünschter Basis ausgeben

2) Dezimalpunkt ausgeben

3) Vorkommastellen des Wertes wegwerfen.

4) Wert mit Basis (z.B. 10) multiplizieren

5) Vorkommastelle ausgeben

6) Goto 3)

von herman (Gast)


Lesenswert?

ok verstanden.
ist ja einfach.

DANKE

von Nico W. (nico_w)


Lesenswert?

Vielleicht hilft dir der Thread hier noch: 
Beitrag "schnelle Wandlung long -> ASCII"

von herman (Gast)


Lesenswert?

ja den kenn ich schon.

Bin jetz nur nich drauf gekommen das ich nach dem *10 die 
Vorkommastellen wegschmeißen kann.

Ich idiot hab als erstes *1000 für z.B. 4 Nachkommastellen
Dann durch 2^Nachkommastellen
Und dann wie beim normalen long oder int to asci weiter gemacht.

Wegen dem *10000 für die Nachkommastellen hat das schnell nicht mehr in 
meinen long long rein gepasst.

Trotzdem Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.