du meinst
kaufmänisch runden ???
Dann mit folgenden Funktionen:
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: [-]
* CREATED: 10-11-2003/shmia
* CHANGED: 00-00-2003/shmia
*************************************************************************}
function RoundUp(X: Extended): Extended;
begin
Result := Trunc(X) + Trunc (Frac(X) * 2);
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
* CHANGED:
*************************************************************************}
function RoundX(const Value:Extended; const nk:Integer):Extended;
var
multi: Extended;
begin
multi := IntPower(10, nk);
Result := RoundUp(Value*multi) / multi;
end;