Kaufmännisches Runden in C auf Mikrocontroller?

OP #2433081
Lesenswert?
• ▲
▼
Hauptsächlich für Mikrocontroller suche ich eine Lösung um kaufmännisch 
zu runden (nach DIN 1333), speziell für 32-Bit Integers.
Gibt es dafür empfehlenswerte Makros oder Funktionen?

Mein Ansatz wäre erstmal ein Makro für positive (ganze) Zahlen und
( (a)/(b) +  ( ( (a) % (b) >= (float)(b)/2.0 ) ? 1 : 0 ) )
und danaben ein Makro das die Beträge einsetzt, also positive Zahlen 
sicherstellt sowie das Vorzeichen bestimmt und nachher wieder anzufügt.
Um den Float-Cast kommt man wohl nicht herum im Fall b=1, und um 
Überläufe zu vermeiden.
Gast #2433324
Lesenswert?
• ▲
▼
Hallo,

will man wirklich vollständig "kaufmännisch Rechnen" dann ist die einzig 
wahre Lösung eine BCD-Arithmetik (Binary Coded Decimal), denn mit Runden 
allein ist es nicht getan!!!
Es gibt hierfür teils fertige Bibliotheken.


Gruss Stefan

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.