Entwickler-Ecke

Sonstiges (Delphi) - Runden


Fabian - Di 06.08.02 20:28
Titel: Runden
Hallo

Wie kann ich eine Zahl vom Typ Double oder Extended auf eine bestimmte Anzahl von Nachkommastellen runden ?


Cashels - Di 06.08.02 21:19

Probiers mal hiermit, habs alledings nicht getestet:


Quelltext
1:
2:
3:
4:
5:
6:
uses math ;

function Runden (f : extended ; n : integer) : extended ;
begin
  Result := round(f*Power(10,n)) / Power(10,n) ;
end ;


Gruss,
Tom


Black Lightning - Mi 07.08.02 00:32

wieso ist der result type extended ?? Sollte doch integer sein, wenn ich mich nicht irre.

mfg
Black Lightning


Klabautermann - Mi 07.08.02 00:47

Black Lightning hat folgendes geschrieben:
wieso ist der result type extended ?? Sollte doch integer sein, wenn ich mich nicht irre.


Du irrst dich, es nach den Runden auf eine bestimmte anzahl von nachkommerstellen gefragt, diese Nachkommastellen müssen natürlich auch mit zurückgegeben werden.

@Fabian: Wenn du, wie in Deutschland üblich, Kaufmännisch runden willst, dann darfst du Round nicht verwenden. Das verwendes das Amerikanische BankersRuond was sich von unserem verfahren unterscheidet.

Eine einfache Funktion zum Kaufmännischen runden könnte so aussehen:


Quelltext
1:
2:
3:
4:
function kRound(aValue : Extendet) : Integer;
begin
  Result := Trunc(aValue * 0.55555555555555);
end;


Verbesserungsvorschläge werden gerne angenommen ;).

Gruß
Klabautermann


Spike - Mi 07.08.02 17:04

Klabautermann hat folgendes geschrieben:
Eine einfache Funktion zum Kaufmännischen runden...

Noch viel einfacher dürfte hier wohl die Verwendung des Typ's Currency sein :-)

Spike