double

#444328
Lesenswert?
• ▲
▼
Die Größe eines doubles hat nichts mit dem uC zu tun, sondern hängt vom 
Compiler ab. Bei avr-gcc sind es z.B. 4Byte.

Für Temperaturdarstellung verwende ich gerne Festkommazahlen im 8.8 
Format:
Ein Byte für die ganzen Zahlen (-128...+127) und ein Byte für die 
Nachkommastellen in 1/256 Schritten.
#444405
Lesenswert?
• ▲
▼
Ganz einfach: Man schreibt 21,43 nicht als double sondern als 
Festkommazahl:
21,43°C entspricht 5486.
Die Temperatur wird einfach mit 256 multipliziert und als signed int 
gespeichert. Damit lässt sich wunderbar rechnen, nur beim Anzeigen des 
Wertes muss man den wieder zurückrechnen: Das Highbyte kann man direkt 
anzeigen, dann kommt das Komma und danach noch die beiden Stellen von 
Lowbyte*100/256.
Dies ergibt die ersten beiden Nachkommstellen.
Gast #444466
Lesenswert?
• ▲
▼
Im Prinzip muss man es auch nicht auf eine bestimmte Anzahl an 
Nachkommabits festlegen. Man könnte die Temperatur z.B. auch einfach 
direkt in Hunderstelgrad abspeichern. Dann fällt die Rechnung beim 
Anzeigen auch noch weg. Man kann die Zahl einfach so ausgeben und muss 
nur das Komma an der richtigen Stelle einfügen. Die 21,43° entsprechen 
dann eben dem Wert 2143.

Antwort schreiben

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.

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.