Einzelnen Beitrag anzeigen

shmia

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

Re: Currency kaufmännisch runden

  Alt 24. Mai 2005, 13:37
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 )
Andreas
  Mit Zitat antworten Zitat