Thema: Delphi Werte runden

Einzelnen Beitrag anzeigen

shmia

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

Re: Werte runden

  Alt 6. Apr 2004, 12:02
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;
Andreas
  Mit Zitat antworten Zitat