Autor Beitrag
sms-ag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Di 15.10.02 23:52 
Gibt es hier eine einfache Lösung?

Ich muss unterschiedlich grosse Zahlenwerte z.B. "5896,15895" oder "1589,894561594" jeweils nach den ersten beiden Stellen nach dem Komma nur auf die Werte .00 und .50 runden. Bei dem ersten Zahlenbeispiel wäre das "5896,00" und bei dem zweiten "1589,50"

D.h. Die 2 Stellen nach dem Komma von .01 - .49 zu .00 runden und von .51 - .99 auf .50 runden.

Die Zahl vor dem Komma bleibt unverändert. Die Anzahl der Nachkommastellen ist variabel.

Die Werte werden dann in eine Datenbank geschrieben und in einem DBGrid angezeigt (Paradox)
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 16.10.02 00:06 
Hallo,

du könntest z.B. Frac verwenden. Dieses liefert dir den Nachkommawert.
In deinen Fall könnte das intewar so aussehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
FUNCTION HalbRund(Wert : Real) : Real;
BEGIN
  IF (Frac(Wert) < 0.5) THEN
    Result := Trunc(Wert)
  ELSE
    Result := Trunc(Wert) + 0.5;
END;


Gruß
Klabautermann

PS: Trunc Schneidet die Nachkommastellen ab.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 16.10.02 08:37 
Hi
Wenn die Anzahl der Nachkommastelle variabel sein soll kannst du auch das verwenden:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function Runden(const Betrag: extended; const Stellen: integer): extended;
var
  Faktor, Wert  : extended;
begin
  Faktor   := IntPower(10, Stellen);
  if Betrag > 0 then
    Wert  := int( Betrag * Faktor + 0.5 )
  else
    Wert  := int( Betrag * Faktor - 0.5 );
  Wert  := Wert / Faktor;
  Result  := Wert;
end;


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...