Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Currency oder Double (https://www.delphipraxis.net/184342-currency-oder-double.html)

bernau 19. Mär 2015 08:29

Currency oder Double
 
Ich weis, für Geldbeträge sollte man den Type Currency verwenden. Bei mir ist es allerdings so, daß ich fast überall double verwende. Sei es aus Unwissenheit, weil ich vor 20 Jahren gar nicht wusste, daß es Curreny gibt und ich mir dadurch noch keine Gedanken über diesen Type machte. Sei es aus Faulheit, weil ich später wusste, daß es Currency gibt, aber nicht daran gedacht habe. Sei es aus dem Kölschen Grund "et hät noch immer joot jejange".

Bisher hatte ich in meiner Laufbahn noch keinen wirklichen bemerkbaren Fehler entdeckt und kein Kunde sagte, daß meine Software falsch rechnet.

Wie haltet Ihr es mit Geldbeträgen. Nehmt Ihr Currency oder Double. Seid ehrlich. ;-)

recall 19. Mär 2015 08:33

AW: Currency oder Double
 
Weder noch, ich rechne intern immer in cents, und daher mit LongInts.
Nur beim Anzeigen gebe ich Euros (oder was auch immer) aus.

himitsu 19. Mär 2015 08:35

AW: Currency oder Double
 
Im Programm wird hier auch überall Double genutzt, aber die Berechnungen laufen fast ausschließlich in der DB ab und dort wird mit NUMERIC (also BCD) gearbeitet/gespeichert.

Das Problem sind die Rundungsprobleme, wie du in dem anderen Thread grade gut nachlesen kannst.

Lemmy 19. Mär 2015 08:54

AW: Currency oder Double
 
Hi,

Überall dort wo die 4 Nachkommastellen und der Wertebereich ausreicht mit Currency (unabhängig ob das Währungsbeträge sind oder nicht). Nur dort wo das nicht ausreicht mit Double oder wenn ich genau sein muss dann mit einer entsprechend kleineren Einheit mit Ganzzahlen.

Ich habe erst letztes Jahr unter heftigem Kampf eine Anwendung zur Rechnungserstellung von Float/Double auf Currency umgebaut. Eine neue Anforderung war die Rechnungsdaten als XML dem Auftraggeber zu übergeben und da gab es einfach zwischen Rechnung auf Papier und der XML ständig Differenzen. Bis dahin wurden diese Differenzen schlicht nie festgestellt - und der Auftraggeber unterstellte mir ständig fehlerhafte Berechnungen-. Erst nach vollständigem Austausch Float - Currency war das Thema durch....

bernau 19. Mär 2015 09:22

AW: Currency oder Double
 
Zitat:

Zitat von himitsu (Beitrag 1294009)
Das Problem sind die Rundungsprobleme, wie du in dem anderen Thread grade gut nachlesen kannst.

Der Thread war ja auch Grund für diesen Thread.

Aber ich hatte noch nie wirklich Rundungsprobleme. Rundungsprobleme bei Double habe ich doch nur, wenn ich mehr als die 15 Siginifikanten stellen verwende. Also im Milliarden-Bereich. Arbeite ich mit Zahlen im Millionen-gereich, dann entsteht der Rundungsfehler doch erst ab der 4 Stelle hinter dem Komma. Der ist doch vernachlässigbar.

Darlo 19. Mär 2015 09:30

AW: Currency oder Double
 
Hi,

ich hatte mal einen Rundungsfehler mit real und double, bin dann extended gegangen. Heute weiß ich auch das es currency gibt, meine Finger tippen aber ständig double...

himitsu 19. Mär 2015 09:52

AW: Currency oder Double
 
Zitat:

Zitat von Darlo (Beitrag 1294026)
meine Finger tippen aber ständig double...

Delphi-Quellcode:
type Double = Currency;
ganz oben in deine Units. :stupid:

Bjoerk 19. Mär 2015 09:53

AW: Currency oder Double
 
Ich verwende double und zur Anzeige Round(Value * 100) / 100. Dabei muß man sicherstellen daß 100 * Value im int64 Bereich liegt.

Darlo 19. Mär 2015 09:56

AW: Currency oder Double
 
Zitat:

Zitat von Bjoerk (Beitrag 1294035)
Ich verwende double und zur Anzeige Round(Value * 100) / 100. Dabei muß man sicherstellen daß 100 * Value im int64 Bereich liegt.

Ich verwende anstatt round
Delphi-Quellcode:
function RoundX(const Value:Extended; const nk:Integer):Extended;
var
   multi: Extended;
begin
   multi := IntPower(10, nk);
   Result := RoundUp(Value*multi) / multi;
end;

Darlo 19. Mär 2015 09:57

AW: Currency oder Double
 
Zitat:

Zitat von himitsu (Beitrag 1294033)
Zitat:

Zitat von Darlo (Beitrag 1294026)
meine Finger tippen aber ständig double...

Delphi-Quellcode:
type Double = Currency;
ganz oben in deine Units. :stupid:

:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
Seite 1 von 3  1 23      

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