![]() |
Geldbeträge und die Datenbank
Hallo,
ich habe gerade das Problem, dass meine Kassensoftware mit dem Datentyp Currency Arbeitet, die Felder in der DB auch so sind und der entsprechend alles mit 4 Nachkommastellen abspeichert. Wenn man aber davon ausgeht, dass man 2 Nachkommastellen haben sollte und darauf ggf. runden sollte passt das ja nicht so ganz zusammen. Da gibt's dann immer mal wieder Abweichungen im Centbereich. Wie ist denn da korrekterweise (für Deutschland) vorzugehen? Vor dem Schreiben der Daten in die DB kaufmännisch auf 2 Nachkommastellen runden? Mit welcher Rundungs Funktion? Math.RoundTo? Grüße TurboMagic |
AW: Geldbeträge und die Datenbank
Ob Currenty oder Flioeßkommazahl ist dabei egal.
Es passiert auch, wenn du z.B. die Steuern ein-/ausrechnest. Wie gerundet wird, nennt sich "kaufmännisches Runden". (nicht arithmetisches Runden) Und wie aktuell gerundet wird, kann man entsprechend umstellen, falls es nicht das Standardverhalten sein sollte. ![]() ![]() SetFPURoundMode Das Runden selber ist aber nicht das Problem, sondern wie man mit diesem Rundungscent umgeht, sowie wann gerundet werden muß. z.B. könnte man erst die Einzelpositionen runden und dann zusammenrechnen, oder erst zusammenrechnen und dann Runden. Wiki sagt zwar was, ![]() aber bezüglich des ![]() Vielleicht helfen andere? ![]() ![]() Im Notfall eher zu Gunsten des Kunden runden, da sollte es weniger Probleme geben, falls sich wer beschwert. |
AW: Geldbeträge und die Datenbank
Naja, zugunsten des Kunden runden könnte Ärger mit dem Finanzamt geben...
Es ist halt die Frage, ob mit 4 Nachkommastellen in der DB speichern und erst bei der Ausgabe runden oder gleich wenn die Daten entstehen? |
AW: Geldbeträge und die Datenbank
Übrigens: die Uhrzeit auf dem Server hier hinkt 1h hinterher...
|
AW: Geldbeträge und die Datenbank
Nja, wenn du speicherst dann besser das Endergebnis gerundet,
denn es wäre blöd, wenn du etwas verstellst und die Finanztype sich bei der nächsten Buchprüfung beschwert, wenn ein anderes Ergebnis rauskommt, als irgendwann mal ausgedruckt/verschickt. Ich weiß leider grade nicht, wie es bei uns gemacht wird, da andere immer damit rumkämpfen und das regelmäßig. Wenn Ausgeloggt, dann gibt es eine Standardeinstellung und ich glaub die war ohne Sommer-/Winterzeit, oder so und wenn eingeloggt, dann hast du es in deinem Profil falsch eingestellt :zwinker: |
AW: Geldbeträge und die Datenbank
Kann im DP Nutzerprofil keine Zeitzonen Einstellung finden...
|
AW: Geldbeträge und die Datenbank
|
AW: Geldbeträge und die Datenbank
Ah! Der Server weiß wohl nix von Sommerzeit. Manuell umstellen ist mir aber zu müßig... ;-)
|
AW: Geldbeträge und die Datenbank
Die ist ja auch abgeschaft worden beinah sein wollen.
|
AW: Geldbeträge und die Datenbank
Zitat:
Insbesondere hast du ansonsten das Problem, dass du bei Summen in der Datenbank andere Werte bekommst als die, die auf der Rechnung stehen. Wenn die Werte pro Zeile gerundet gespeichert sind, gibt es auch keine relevanten Rundungsdifferenzen mehr, weil die Datentyp-Ungenauigkeit einfach viel geringer ist, zumindest wenn man mit ausreichend Nachkommastellen speichert. Bei Currency und nur 4 Nachkommastellen im Speicher könnte das problematischer sein, das müsste man genauer anschauen. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz