AGB  ·  Datenschutz  ·  Impressum  







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

Runden und Currency

Offene Frage von "Mario"
Ein Thema von Mario · begonnen am 12. Jul 2004 · letzter Beitrag vom 12. Jul 2004
Antwort Antwort
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#1

Runden und Currency

  Alt 12. Jul 2004, 11:51
Hallo,

ich habe folgenden Test mit Currency (Delphi 7) gemacht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var cur: Currency;
begin
  cur := 2000.5; // -> Ausgabe 2000 EUR
  ShowMessage(CurrToStrF(cur, ffCurrency, 0));

  cur := 1.5; // -> Ausgabe 2 EUR
  ShowMessage(CurrToStrF(cur, ffCurrency, 0));
end;
Einmal wird auf und einmal abgerundet? Habe ich hier einen Denkfehler oder ist es ein Fehler in Delphi?
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Runden und Currency

  Alt 12. Jul 2004, 11:54
Delphi rundet Kaufmännisch!

bei 0.5

ungerade Zahlen -> aufrunden
gerade Zahlen -> abrunden

Addiere die 2000.5 bzw. 1.5 mit 0.05 und schon rundet Delphi richtig
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Runden und Currency

  Alt 12. Jul 2004, 12:00
Oh danke, dass erklärt natürlich einiges.

Gibt es auch Delphi-Funktionen, die normal runden? Der Workaround ist zwar eine Lösung, aber ich nutze gern gekapselte fertige Funktionen.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Runden und Currency

  Alt 12. Jul 2004, 12:03
Zitat von Mario:
Einmal wird auf und einmal abgerundet? Habe ich hier einen Denkfehler oder ist es ein Fehler in Delphi?
Delphi verwendet "Banker's rounding". Die Auf- und Abrundungen sollen sich in der Masse gegenseitig aufheben.
Kaufmännisches Runden geht so:
Delphi-Quellcode:
function CommercialRound(const X: Float): Int64;
begin
  Result := Trunc(X);
  if Frac(Abs(X)) >= 0.5 then
    Result := Result + Sgn(X);
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

Re: Runden und Currency

  Alt 12. Jul 2004, 12:06
schreib dir selber eine, oder ...
gerundetezahl:=trunc(zahl+0.5)
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:41 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