web-dev-qa-db-ger.com

Rundungsstandards - Finanzberechnungen

Ich bin neugierig auf das Vorhandensein von Rundungsstandards bei der Berechnung von Finanzdaten. Meine ersten Gedanken sind, Rundungen nur dann durchzuführen, wenn die Daten dem Benutzer präsentiert werden (Präsentationsschicht).

Wenn "gerundete" Daten dann für weitere Berechnungen verwendet werden, verwenden Sie die "gerundete" Zahl oder die "rohe" Zahl. Hat jemand einen Rat?

Bitte beachten Sie, dass mir verschiedene Rundungsmethoden bekannt sind, z. B. Banker-Rundung usw.

26
Guamez

Die erste und wichtigste Regel: Verwenden Sie einen Dezimal-Datentyp , niemals binäre Gleitkommatypen.

Wann genau eine Rundung erfolgen soll, kann durch Vorschriften vorgeschrieben werden, beispielsweise die Umrechnung zwischen dem Euro und den Landeswährungen sie wird ersetzt.

Wenn es keine solchen Regeln gibt, würde ich alle Berechnungen mit hoher Genauigkeit durchführen und nur zur Darstellung runden, d. H. Keine gerundeten Werte für weitere Berechnungen verwenden. Dies sollte die beste Gesamtgenauigkeit ergeben.

13

Ich habe gerade einen Greybeard-Mainframe-Programmierer bei der Finanzsoftware-Firma gefragt, für die ich arbeite, und er sagte, dass es keinen bekannten Standard gibt, und es liegt an der Programmiererpraxis. 

Während Statistiker seit mindestens 1906 über das Rundungsproblem informiert sind, ist es schwierig, einen Finanzstandard zu finden, der dies bestätigt. 

Laut this sit e) legt der "Bericht der Europäischen Kommission Die Einführung des Euro und die Rundung der Währungsbeträge ) nahe, dass es bisher keinen einheitlichen Rundungsansatz im Bankwesen gegeben hat". 

Verwenden Sie im Allgemeinen einen symmetrischen Rundungsmodus, unabhängig davon, auf welcher Basis Sie arbeiten (Base-2 oder Base-10).

Dadurch werden systematische Verzerrungen bei Berechnungen vermieden.

Ein solcher Modus ist Round-Half-To-Even, auch als "Banker Rounding" bekannt.

Verwenden Sie Sprachwerkzeuge, mit denen Sie die numerische Kontextgenauigkeit angeben können, einschließlich der Rundungs- und Abschneidemodi. Beispiel: Python's decimal module. Die impliziten Annahmen der C-Bibliothek sind möglicherweise nicht für Ihre Berechnungen geeignet.

http://en.wikipedia.org/wiki/Rounding#Rounding_to_integer

12
Joe Koberg

Ich habe nicht gesehen, dass es "den einen Standard gibt, um alle zu regieren" - es gibt eine Anzahl von Rundungsregeln (wie Sie bereits erwähnt haben), und diese scheinen auf der Grundlage von Industrie/Kunden/Währungscode ( http) ins Spiel zu kommen : //en.wikipedia.org/wiki/ISO_4217 ) - Da nicht jeder zwei Stellen nach der Dezimalstelle verwendet, wird das Problem noch komplizierter. Am Ende des Tages muss Ihr Kunde die Regeln festlegen, die er implementieren möchte ...

3
chrismh

Es ist frustrierend, dass es hier keine klaren Standards gibt, sowohl um den Programmierer anzuleiten, als auch um vor Gericht zu verteidigen. Allein die "regelmäßige" Rundung auf die nächstgelegene Stelle für die Gehaltsabrechnung kann dazu führen, dass hier und da ein paar Cent auf einem Gehaltsscheck zu wenig gezahlt werden.

Obwohl ein Basislohnsatz möglicherweise nur mit zwei Dezimalstellen angegeben wird ("Sie werden zu 22,71 USD/Stunde eingestellt"), ergeben sich für Überstunden (ermittelt durch Mittelung mehrerer Lohnsätze in einem Zeitraum) effektive Stundensätze von 23,37183475 USD/Std.

Wie bezahlen Sie Überstunden?

15 hours x 23.37183475 x 1.5 = $525.87 rounded from $525.86628187
15 hours x 23.37       x 1.5 = $525.82

WARUM DID STEHLEN SIE MEINEM KUNDEN FÜNF CENT? Leider mache ich darüber keine Witze.

Dies wird noch unangenehmer, wenn Sie mit der vollen Genauigkeit rechnen, aber eine abgeschnittene Version anzeigen: Sie führen die erste Berechnung oben durch, zeigen jedoch nur 23,37 USD für den Tarif auf dem Lohnzettel an.

Jetzt sind die Berechnungen der Gehaltsabrechnungen nicht mehr an den Penny gebunden, und jetzt müssen Sie es erklären, aber selbst wenn es zu Gunsten des Arbeitnehmers ist, kann es für einen Arbeitsanwalt ausreichen, Blut im Wasser zu riechen und nach anderen Ausschau zu halten Sachen.

Ein Ansatz besteht darin, immer zugunsten des Arbeitnehmers zu verhandeln, und nicht in die natürliche Richtung, damit es niemals zu einem systematischen Diebstahl von Löhnen kommen kann.

1
Steve Friedl

Erwägen Sie die Verwendung von skalierten Ganzzahlen.

Mit anderen Worten, speichern Sie ganze Zahlen von Pfennigen anstelle von Bruchteilen von Dollar.

0
Beth