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 1 von 3  1 23      
Benutzerbild von bernau
bernau

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

Currency oder Double

  Alt 19. Mär 2015, 09:29
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.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
recall

Registriert seit: 21. Dez 2004
Ort: Hannover
9 Beiträge
 
Delphi XE5 Professional
 
#2

AW: Currency oder Double

  Alt 19. Mär 2015, 09:33
Weder noch, ich rechne intern immer in cents, und daher mit LongInts.
Nur beim Anzeigen gebe ich Euros (oder was auch immer) aus.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Currency oder Double

  Alt 19. Mär 2015, 09:35
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Lemmy

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

AW: Currency oder Double

  Alt 19. Mär 2015, 09:54
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....
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

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

AW: Currency oder Double

  Alt 19. Mär 2015, 10:22
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.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Currency oder Double

  Alt 19. Mär 2015, 10:30
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...
Philip
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Currency oder Double

  Alt 19. Mär 2015, 10:52
meine Finger tippen aber ständig double...
type Double = Currency; ganz oben in deine Units.
$2B or not $2B
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Currency oder Double

  Alt 19. Mär 2015, 10:53
Ich verwende double und zur Anzeige Round(Value * 100) / 100. Dabei muß man sicherstellen daß 100 * Value im int64 Bereich liegt.
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Currency oder Double

  Alt 19. Mär 2015, 10:56
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;
Philip
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: Currency oder Double

  Alt 19. Mär 2015, 10:57
meine Finger tippen aber ständig double...
type Double = Currency; ganz oben in deine Units.
Philip
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:16 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