AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Currency oder Double

Ein Thema von bernau · begonnen am 19. Mär 2015 · letzter Beitrag vom 20. Mär 2015
Antwort Antwort
Seite 2 von 3     12 3      
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

AW: Currency oder Double

  Alt 19. Mär 2015, 11:13
Bisher hatte ich in meiner Laufbahn noch keinen wirklichen bemerkbaren Fehler entdeckt und kein Kunde sagte, daß meine Software falsch rechnet.
Wenn eine SW falsch rechnet, dann war bzw. ist die Ursache ja meistens der Programmierer. Das Problem sitzt ja bekanntlich meistens vor dem PC
Darum denke ich, dass es - bei richtiger Anwendung - keine Falschberechnungsunterschiede (blödes Wort) zwischen Currency und Double gibt.

Wie haltet Ihr es mit Geldbeträgen. Nehmt Ihr Currency oder Double. Seid ehrlich.
Ich nehme generell Double, weil ansonsten manchmal Abweichungen entstehen können. Speziell bei Berechnungsketten wie z.B. bei Artikelpreisen: Listenpreis abzüglich Händlerrabatt, zuzüglich Rohstoffzuschlag, zuzüglich Aufschlag, abzüglich Mengenrabatt, zuzüglich Märchensteuer....

Da speichere ich in den Stammdaten alle Nachkommastellen die der Double hergibt. Runden tu ich dann erst bei der Fakturierung.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#12

AW: Currency oder Double

  Alt 19. Mär 2015, 12:00
Abrechnung in der Datenbank mit Numeric() also Festkomma, deshalb keine Probleme in dieser Beziehung.
Im Programm selbst wird Double verwendet, aber dort wird eigentlich nur addiert oder mit Ganzzahl multipliziert.
Die Ausgabe wird natürlich gerundet. Probleme sind nicht bekannt.

Das einzig bekannte Rundungsproblem hat nur indirekt mit dem Datentyp zu tun.
Wir erstellen in der Regel Ausgangsrechnungen abei denen die Einzelpositionen Brutto ausgewiesen werden.
Die Mehrwertsteuer wird auf den Gesamtbetrag je Mehrwertsteuersatz berechnet.

Brutto MwSt. Steuer Netto
10,00 19% 1,60 8,40

Da sich dieser Betrag aber aus unterschiedlichen Leistungen zusammensetzt,
sollen die Teilbeträge in die Buchhaltung getrennt für verschieden Erlöskonten übergeben werden.

Brutto MwSt. Steuer Netto
06,60 19% 1,05 5,55 Erlöskonto1
03,40 19% 0,54 2,86 Erlöskonto2

Es gibt verschiedene Möglichkeiten das Problem zu umgehen (separate Steuerbuchung, Zwischenkonto), damit zumindest die Steuersumme stimmt.
Diese sind nicht bei jeder Buchhaltungssoftware auf die gleich Weise anwendbar.
Das Problem verschiebt sich dadurch nur, von welchem Erlöskonto zieht man jetzt den Steuer-Cent ab?
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#13

AW: Currency oder Double

  Alt 19. Mär 2015, 12:13
Das Problem verschiebt sich dadurch nur, von welchem Erlöskonto zieht man jetzt den Steuer-Cent ab?
Lösbar ist das Problem ja nicht. Also schlucke ich die kleinste Kröte und nehme immer das (Erlös-)Konto mit dem höchsten Betrag, weil dadurch die Fibu insgesamt am wenigsten verfälscht wird. Der Anwender kann noch einstellen, ob und wie er informiert werden möchte. Im Logfile steht es aber generell.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#14

AW: Currency oder Double

  Alt 19. Mär 2015, 13:52
!currency!
Ohne Currency gab es im Zusammenspiel von DB, Frontend und erstellten Briefen (Word mit ein paar Macros) immer wieder Abweichungen im Cent-Bereich, die nervig bis peinlich waren.
Jetzt herrscht Ruhe!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#15

AW: Currency oder Double

  Alt 19. Mär 2015, 14:26
Da viele Textausgabefunktionen (Float->String) eher abrunden/abschneiden, müsste man beim Double entweder "runden" oder vor Anzeige 'nen 1/100stel oder 1/1000stel traufrechnen, damit meistens richtig "abgerundet" wird.
$2B or not $2B
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#16

AW: Currency oder Double

  Alt 19. Mär 2015, 14:36
!currency!
Ohne Currency gab es im Zusammenspiel von DB, Frontend und erstellten Briefen (Word mit ein paar Macros) immer wieder Abweichungen im Cent-Bereich, die nervig bis peinlich waren.
Jetzt herrscht Ruhe!

Gruß
K-H
Kann es sein, dass diese Abweichungen auch was mit der Datenbank zu tun haben? Ich verwende NexusDB - die ja bekanntlich in Delphi programmiert ist - und hatte diesbezüglich noch keine Probleme.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#17

AW: Currency oder Double

  Alt 19. Mär 2015, 15:24
Also floating point ist floating point, egal wer mit wem und wo das programmiert wurde. Wenn Nexus-DB hier kein FP nimmt, sondern BCD, dann wäre das ja mal was, wobei 'Numeric(x,y)' zumindest in SQL-Server auch eine BCD ist.

FP und Währungen sind eine Qual. Wir haben ein Bankensystem, bei dem die Honks, die das programmiert haben, alle Währungen in der DB als 'float' abgebildet haben (SQL-Server) und nun müssen sie in jeder 2.Zeile die Werte krampfhaft runden. Und selbst dann kann ich von einem Konto, auf dem noch 9.99 Euro drauf sind, nicht immer 9.99 Euro abheben, weil der Dispo auf 0.00 ist und -0.0000000000000000123 eben weniger als 0.00 sind.

Zu den Argumenten: "Bei mir ist noch nie was passiert" fällt mir immer nur der Autofahrer ein, der ohne Sicherheitsgurt fährt, und das gleiche sagt.

Wegen interner Berechnungen von Zinsen etc. verwenden wir BCD, da ist Currency leider nicht genau genug. Aber in er DB würde ich nur noch 'money' verwenden. In der Darstellungsschicht würde ich allerdings auf Currency setzen, weil das irgendwie dem nahe kommt, was man darstellen will.

Vor Jahren haben wir mal eine Logistik- und Abrechnungssoftware mit Double gebaut, das war ähnlich krank. Da hatten wir zwar keine Probleme in der DB, aber dafür bei der Rechnungslegung. Was da für Rundungsprobleme entstanden sind, verstehe ich bis heute nicht, aber sie waren da.

Geändert von Dejan Vu (19. Mär 2015 um 15:30 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: Currency oder Double

  Alt 19. Mär 2015, 15:36
FP und Währungen sind eine Qual. Wir haben ein Bankensystem, bei dem die Honks, die das programmiert haben, alle Währungen in der DB als 'float' abgebildet haben (SQL-Server) und nun müssen sie in jeder 2.Zeile die Werte krampfhaft runden. Und selbst dann kann ich von einem Konto, auf dem noch 9.99 Euro drauf sind, nicht immer 9.99 Euro abheben, weil der Dispo auf 0.00 ist und -0.0000000000000000123 eben weniger als 0.00 sind.
Drollig wird es dann, wenn die Programmierer angewackelt kommen und fragen, warum da -0.0000000000000000123 raus kommt - weil sie runden ja vorher (einen Double auf einen Double)...

Zu den Argumenten: "Bei mir ist noch nie was passiert" fällt mir immer nur der Autofahrer ein, der ohne Sicherheitsgurt fährt, und das gleiche sagt.
das hinkt... Das Problem ist doch: Es passiert immer wieder, nur fällt es nicht auf. Wie bei der Software die ich in meinem letzten Post beschrieben habe: Über Jahrzehnte wird da mit Double gerechent - die Unterschiede (und Rechenfehler) sind erst dann aufgefallen, als ich die gleichen Daten in eine XML schreiben musste - da aber halt als Cent-Betrag ohne Nachkommastellen und auf einmal hat sich Papierrechnung und XML unterschieden....
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#19

AW: Currency oder Double

  Alt 19. Mär 2015, 16:43
[QUOTE=Lemmy;1294082das hinkt... [/QUOTE] Das Wesen eines guten Vergleiches ;-()
Du kannst auch mal ohne Gurt auf deinen Vordermann stupseln. Aber klar. Im Grunde genommen ist die Einstellung, ohne Gurt ginge es auch, etwas fataler in der Auswirkung als 'Double als Währung'.

Grad gestern hat der 'Lead Developer' hier gemeint, wir sollten doch bitte auch in neuen Funktionen mit 'Float' und 'Double' arbeiten, sonst würde man ja ganz konfus..
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#20

AW: Currency oder Double

  Alt 19. Mär 2015, 17:28
Drollig wird es dann, wenn die Programmierer angewackelt kommen und fragen, warum da -0.0000000000000000123 raus kommt - weil sie runden ja vorher (einen Double auf einen Double)...
Ja, ein Double ist ein Double. Und wenn ich weis, wie ich mit einem Double umgehen muss, dann passiert mir so etwas nicht.

Das soll jetzt kein Fürsprecher für Double sein. Aber auch mit Currency gibt es bestimmt auch Fallstricke. Man muss ich eben mit dem Zahlentyp auskennen.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz