![]() |
kaufmännisch runden
Für kaufmänisches Runden bietet Delphi keine Standard Funktion an.
Die Funktion Round() verwendet arithmetisches Runden, das für kaufmänische Rechnungen nicht brauchbar ist. siehe auch: ![]() Folgende Funktionen eignen sich für den Datentyp Extended, sowie die kleineren Brüder Double und Float. Zum kaufmänischen Runden von Currency gibt es eine eigene optimierte Funktion: ![]()
Delphi-Quellcode:
{**************************************************************************
* NAME: RoundUp * DESC: kaufmännisches Runden * Die Delphi Funktion Round() wendet das Verfahren * "Bankers Rounding" an. * Falls ein Zahl auf 0.5 endet wird immer die nächste * geradzahlige Ganzzahl geliefert: * 10.5 -> 10 (abgerundet) * 7.5 -> 8 (aufgerundet) * Der Grund dafür ist, dass bei Summierungen sich die * Fehler durch die Rundung statistisch aufheben sollen. * * RoundUp rundet dagegen bei .5 immer auf. * * PARAMS: [-] * RESULT: [-] *************************************************************************} function RoundUp(X: Extended): Extended; begin Result := Trunc(X) + Trunc (Frac(X) * 2); end; { // Alternative Implementation von RoundUp function RoundUp(X : Extended) : Int64; begin if X > 0 then Result := Trunc(X + 0.5) else Result := Trunc(X - 0.5); end; } {************************************************************************** * NAME: RoundX * DESC: kaufmännisches Runden mit Angabe der Nachkommastellen * Bsp: RoundX(1.2345678,2) ==> 1.23 * RoundX(1.2345678,4) ==> 1.2346 * RoundX(1529, -2) ==> 1600 * PARAMS: Value:Extended; nk:Integer * RESULT: Extended * CREATED: 22-01-2003/shmia *************************************************************************} function RoundX(const Value:Extended; const nk:Integer):Extended; var multi: Extended; begin multi := IntPower(10, nk); Result := RoundUp(Value*multi) / multi; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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 by Thomas Breitkreuz