![]() |
Runden und Currency
Hallo,
ich habe folgenden Test mit Currency (Delphi 7) gemacht:
Delphi-Quellcode:
Einmal wird auf und einmal abgerundet? Habe ich hier einen Denkfehler oder ist es ein Fehler in Delphi?
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; |
Re: Runden und Currency
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 |
Re: Runden und Currency
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. |
Re: Runden und Currency
Zitat:
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; |
Re: Runden und Currency
schreib dir selber eine, oder ...
Delphi-Quellcode:
gerundetezahl:=trunc(zahl+0.5)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 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-2025 by Thomas Breitkreuz