Anmelden

View Full Version : WERTE runden/aufrunden/abrunden auf volle 0,05 oder 0,10 oder 0,50



labm
30-03-06, 13:32
HILFE!!

Hat jemand eine Idee wie man so was realisieren kann z. Beispiel bei Preisänderungen.
Beispiel: Stück Preis 128.57 Euro Preis änderung um 4,5% kaufmenich gerunden auf volle 0,50 Cent.

Fuerchau
30-03-06, 13:38
Wert = %int((wert * fakt) * 2) / 2 => runden auf 0,5
Wert = %int((wert * fakt) * 20) / 20 => runden auf 0,05

usw.

labm
30-03-06, 13:46
Wert = 128,57
Faktor= 4,5%
%int =???

wert= ???((128,57 *1,045) *2) /2 bei Runden auf 0,5

Fuerchau
30-03-06, 14:07
%Int() ist ein BUILTIN-Funktion des RPGLE und liefert den Vorkommateil.

In RPG geht es etwas schwieriger:

faktor mult wert ergnk 112h
ergnk mult 2 fixwert 110
fixwert div 2 ergnk

labm
31-03-06, 07:28
Die Funktion ist schon gut da kann ich aber nicht sagen dass ich dass mal kaufmänich runden oder aufrunden bzw. abrunden will.

Fuerchau
31-03-06, 08:46
ergnk mult 2 fixwert 110h

0.49 * 2 => 0.98 = 1 / 2 = 0.5
0.51 * 2 => 1.02 = 1 / 2 = 0.5
0.76 * 2 => 1.52 = 2 / 2 = 1

Ohne h wird eben nicht gerundet sondern abgeschnitten.

Mit anderen Rundungsfaktoren geht es genauso:
0.50 = 2
0.25 = 4
0.10 = 10

Wenn du die Regel erkennst, dann ist das einfach: Rundungsfaktor = 1 / Faktor !

BenderD
31-03-06, 09:05
Hallo,

%dech ist dein Freund

mfg

Dieter Bender


HILFE!!

Hat jemand eine Idee wie man so was realisieren kann z. Beispiel bei Preisänderungen.
Beispiel: Stück Preis 128.57 Euro Preis änderung um 4,5% kaufmenich gerunden auf volle 0,50 Cent.

Fuerchau
31-03-06, 09:35
@Dieter
Mit den Builtin-Funktionen muss man manchmal vorsichtig sein.
Je nach Ziel des Eval werden die Zwischenergebnisse bereits mit der falschen Anzahl Nachkomma berechnet.

BenderD
31-03-06, 09:49
@Baldur
das hat aber wenig mit bifs und viel mit mehrgliedrigen Ausdrücken und einem Würfel Algorithmus namens RESDECPOS zu tun.

mfg

Dieter


@Dieter
Mit den Builtin-Funktionen muss man manchmal vorsichtig sein.
Je nach Ziel des Eval werden die Zwischenergebnisse bereits mit der falschen Anzahl Nachkomma berechnet.