Entwickler-Ecke
Sonstiges (Delphi) - Die Stellen nach dem Komma nur auf .00 und .50 runden
sms-ag - Di 15.10.02 23:52
Titel: Die Stellen nach dem Komma nur auf .00 und .50 runden
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 - 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:
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 - Mi 16.10.02 08:37
Hi
Wenn die Anzahl der Nachkommastelle variabel sein soll kannst du auch das verwenden:
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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!