12 Stimmen

Gemeinsame Strategien zum Umgang mit Rundungsfehlern in währungsintensiven Soft?

Wie lautet Ihr Ratschlag zu:

  1. Entschädigung der akkumulierten Fehler bei mathematischen Massenoperationen an Sammlungen von Money-Objekten. Wie ist dies in Ihrem Produktionscode für Ihr Gebietsschema implementiert?
  2. Theorie hinter der Rundung in der Buchhaltung.
  3. jede Literatur zum Thema.

Ich lese derzeit Fowler . Er erwähnt den Geldtyp und seine typische Struktur (int, long, BigDecimal), sagt aber nichts über Strategien.

Ältere Beiträge zur Geldaufrundung ( ici y ici ) bieten nicht die Details und Formalitäten, die ich brauche.

Gedanken, die ich im Internet gefunden habe, beziehen sich auf das "Abrunden auf halber Höhe" als beste Möglichkeit, Fehler auszugleichen.

Danke für die Hilfe.

1voto

Matthieu M. Punkte 266317

Ich habe ein wenig (nur ein wenig) mit Geldbeträgen gearbeitet und war sehr neugierig auf die Strategie, die in meinem Unternehmen angewandt wird...

Es hat sich herausgestellt, dass wir die double aber sie haben darüber nachgedacht.

Die Sache ist die, dass die Beträge, mit denen wir zu tun haben, nicht so groß sind (sagen wir weniger als 10k) und wir höchstens 3 Stellen nach dem Komma benötigen, also insgesamt 7 signifikante Stellen.

Da wir 64-Bit-Software (und C++) verwenden, ist die double Typ bietet genügend signifikante Stellen für die Anzahl der Operationen, die wir auf ihm durchführen :)

Wenn Sie mehr Präzision benötigen, gibt es Algorithmen zu verwenden (z. B. beim Addieren mehrerer Geldbeträge), aber ich persönlich denke, der Kern des Problems kommt eher von:

  • Umrechnung von einer Währung in eine andere, die sich natürlich ständig ändert
  • Druckprobleme, wobei einige Geldscheine keine Dezimalstelle erfordern, andere höchstens 2 usw...

Könnten Sie vielleicht näher auf die Operationen eingehen, die Sie durchführen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X