PDA

View Full Version : Numerischen Wert aufrunden



harkne
29-03-06, 15:20
Hallo zusammen,

entweder ich steh auf der Leitung (was nichts ungewöhnliches ist) aber wie bekomme ich es ohne Hilfsvariable hin den Wert einer Berechnung immer aufgerundet in ein Feld ohne Nachkommastellen zu bekommen.

Also Ergebnisfeld hat die Länge 4,0
Falls die Berechnung den Wert glatt z.B. 1,00000000 liefert soll das Ergebnis auch 1 sein,
liefert die Berechnung eine Nachkommastelle z.B. 1,000001 soll das Ergebnis 2 sein.

Also immer aufrunden nicht kaufmännisch runden.

Vielen Dank für Eure Mühe

Fuerchau
29-03-06, 15:26
Das geht leider nicht ohne Hilfsfeld, da es keine Standardfunktion ist:

NkFeld = Formel;
FixFeld = NkFeld;
if FixFeld <> NkFeld;
FixFeld += 1;
endif;

harkne
29-03-06, 15:28
Danke, habs mir fast gedacht dass man solche banalen Dinge nicht einfacher hinbekommt

Robi
29-03-06, 16:04
Bei berechnungen bei denen ich die nachkomastellen kenne,
addiere ich immer 0,49999 ( bei 5 NK) dazu.
dann geht kaufm. runden
Robi

Fuerchau
29-03-06, 17:01
Jo, das wäre dann einfach:

FixFeld = Formel + 0,9..9; // Je nach Genauigkeit

Leider besteht das Problem, dass Zwischenergebnisse hier ggf. ohne Nachkomma gerechnet werden. Also mal einfach ausprobieren.

B.Hauser
29-03-06, 19:40
Hallo,

in RPG gibt es diese Funktion nicht, wohl aber in SQL. Die Funktion CEILING oder CEIL rundet immer auf die nächste volle Zahl auf, also 1,00001 --> 2, 1 --> 1, -3,2 --> -3



C/EXEC SQL Set :Ergebnis = CEIL(Formel oder Zahl)
C/END-EXEC


Birgitta

harkne
30-03-06, 12:25
Danke an Euch alle, viele Wege führen nach Rom ich hätte halt nur gern den direkten genommen ;)