Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Werte runden (https://www.delphipraxis.net/19634-werte-runden.html)

Christian18 6. Apr 2004 11:57


Werte runden
 
Hallo,

Wie kann ich ein ergebnis auf zwei nachkomma stellen runden???

Lefko 6. Apr 2004 12:02

Re: Werte runden
 
Delphi-Quellcode:
Ergebnis := round(Ergebnis*100) / 100;
So sollte es gehen :)

shmia 6. Apr 2004 12:02

Re: Werte runden
 
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;

PAX 6. Apr 2004 12:04

Re: Werte runden
 
Versuchs mal mit RoundTo(1.234, -2)

PAX

Christian18 6. Apr 2004 12:39

Re: Werte runden
 
OK vielen dank es hat funktioniert.

Mit freundlichen Grüßen

Christian18

shmia 6. Apr 2004 12:43

Re: Werte runden
 
Zitat:

Zitat von Christian18
OK vielen dank es hat funktioniert.

Du hast den kleinen Unterschied zwischen kaufmänisch Runden und Banker's Rounding
aber schon verstanden und beachtet ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 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