Wenn du das in deinem Eröffnungsposting gezeigt hätte, hätte ich nichts
gesagt. Aber nach dem Hinweis auf itoa bzw. dem Link in die FAQ ist die
Funktion zerlegen() ja wohl ein Hohn auf alle die dir geholfen haben.
Fang mal damit an, dir eine Funktion zu schreiben, die 1 Zeichen
ausgibt. Und zwar nach den Regeln der Kunst und nicht nur indem auf gut
Glück ein Zeichen an UDR1 zugewiesen wird.
Dann machst du eine Funktion, die einen String ausgeben kann. Da kommt
dir jetzt die eben geschrieben Funktion für Einzelzeichen zu gute.
Und dann schreibst du dir eine Funktion die einen int ausgeben kann.
Dazu benutzt du eine Umwandlungsfunktion, die dir den Zahlenwert in
einen String umwandelt und gibst diesen mit der String-Ausgabefunktion
aus.
Das alles lässt sich in 3 Funktionen abbilden, von denen keine einzige
mehr als 4 Zeilen Code umfasst und universell einsetzbar ist.
Man kann dein Problem natürlich auch mit Floating Point lösen. Man muss
es aber nicht. Das Stichwort heisst Fixpunktarithmetik. Ob du
Geldbeträge als Kommazahlen in Euro zusammenzählst oder ob du das mit
ganzen Zahlen in Cent machst, kommt aufs gleiche raus. Wenn du die
Centbeträge hast und zwischen die 2.te und 3.te Stelle bei der Ausgabe
ein , einschmuggelst, dann merkt kein Benutzer, dass du in Wirklichkeit
nicht mit Kommazahlen gerechnet hast
1,20 € 120 Cent
+ 3,40 € 340 Cent
+ 5,60 € 560 Cent
------ ----------
10,20 e 1020 Cent
|
| Zur Anzeige ein , zwischen Stelle 2
| und Stelle 3
v
10,20
> Wieder in ein Array speichern und ausgeben wäre ziemlich umständlich
> da ich nie weiß wieviele Nachkommstellen der Wert hat.
Er hat soviele Stellen wie du gewillt bist auszugeben.
> nehmen wir den Wert von 1,9V = 0644
> (644 * 3,03) / 1024 = 1,9055859375
Das ist ziemlich sinnlos.
Dein ADC löst in 1024 Stufen aus, kann daher eine Spannung auf
1/1024*Referenzspannung = 0.0029 Volt (also rund 0.003V) auflösen.
Es ist daher völlig sinnlos, die Ausgabe auf 10 Nachkommastellen zu
machen. Alles nach der 3ten Nachkommastelle ist sowieso gelogen. Und ob
die Tausendstel stimmen, ist mehr als fraglich. Man hat ja schliesslich
auch Messfehler, die im Ergebnis auftauchen.
Nur weil ein Taschenrechner auf 10 Stellen nach dem Komma rechnen kann,
heist das noch lange nicht, dass so ein Ergebnis auch Sinn macht. Das
ist wie mit den Meinungsforschern, die vor einer Wahl ihre Prognose am
liebsten auf 2 Nachkommastellen veröffentlichen, basierend auf einer
Befragung von 100 Leuten :-) Wenn von den 100 nur 1 anders antwortet,
ändert sich das Ergebnis um einen ganzen Prozentpunkt, aber sie geben
ihre Hochrechnung auf 2 Nachkommastellen an :-)