
Zitat von
franktron:
Meinste nicht das das auch kürzer geht
Delphi-Quellcode:
Procedure SRound(Var Zahl : Real;Stellen : Longint);
Var
NBuf : Real;
Begin
NBuf:=IntPower(10,Stellen);
Zahl:=Zahl*NBuf;
Zahl:=Trunc(Zahl)+Trunc(Frac(Zahl)*2);
Zahl:=Zahl/NBuf;
End;
Deine Prozedure ist zwar kürzer, hat aber doch einige "Reibungsverluste".
Der Datentyp
Real benützt 64 Bit, hat aber nicht die Genauigkeit wie
Currency.
(bei sehr großen Zahlen hat Real keine 4 Nachkommastellen mehr)
Man müsste also schon
Extended benützen.
Beim Wandeln von Currency nach Extended wird intern durch 10000 dividiert; in umgekehrter Richtung wird
mit 10000 multipliziert.
Wenn man viel mit Currency arbeitet, können sich die paar Zeilen mehr schon lohnen.
(vielleicht macht ja jemand einen Benchmark Vergleich

)