View Full Version : WERTE runden/aufrunden/abrunden auf volle 0,05 oder 0,10 oder 0,50
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.
Wert = %int((wert * fakt) * 2) / 2 => runden auf 0,5
Wert = %int((wert * fakt) * 20) / 20 => runden auf 0,05
usw.
Wert = 128,57
Faktor= 4,5%
%int =???
wert= ???((128,57 *1,045) *2) /2 bei Runden auf 0,5
%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
Die Funktion ist schon gut da kann ich aber nicht sagen dass ich dass mal kaufmänich runden oder aufrunden bzw. abrunden will.
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 !
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.
@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.
@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.