PDA

View Full Version : kaufmänisches Runden im free-format



zannaleer
21-12-04, 12:34
Hallo Forum,

wie kann ich bei einem Rechenvorgang im free-form RPG angeben, dass einen Rundung durchgeführt werden soll?

Muss ich dann vor die Zeile eval(h) schreiben, oder gibt es da einen eleganteren Weg?
So sieht das irgendwie blöd aus, finde ich:

eval(h) AWPRMPS70 = M_UM70 * 100 / M_PM70;

Gruß
Alexander

Fuerchau
21-12-04, 12:51
Der Weg mit eval(h) ist so korrekt und nicht anders möglich.

zannaleer
21-12-04, 13:14
Schade eigentlich.
Ich dachte, ich könnte im free-format komplett auf eval verzichten.
Na ja, vielleicht ändert sich da was bei V5R3.
Danke für die Antwort.

malzusrex
21-12-04, 13:20
naja, müsste denn nicht auch folgendes gehen ?!?


/free
awprmps70 = %DecH( (M_um70 * 100 / M_PM70) : 7 : 2 ) ;
/end-free


wobei die 7:2 = 7Stellen mit 2 Nachkommastellen ist

Tschau Ronald

Fuerchau
21-12-04, 13:25
Auch hier wird nicht gerundet, sondern das Ergebnis abgeschnitten.
%decH heisst nicht runden sondern auf gerade Anzahl Stellen bringen (Halfadjust).

malzusrex
21-12-04, 13:51
Hallo Baldur,

da würde ich jetzt aber doch mal wieder sprechen wollen


d Wert1 s 9 4 Inz( 3,8170 )
d Wert s 7 2
d Wertx s 7 2
/free
Wert = %DecH( Wert1 : 7 : 2 );
Wertx = %Dec( Wert1 : 7 : 2 );
*InLr = *On;
/End-Free


bei mir kommt da folgendes raus

Wert = 3,82
Wertx = 3,81

Gruß Ronald

Fuerchau
21-12-04, 15:13
Ups !
Man müsste den englischen Begriff "halfadjust" mal korrekt erklären. Frei übersetzt könnte es auch Runden (eigentlich "Round") heissen.

JustMe
24-12-04, 12:53
So wie wir es früher ;) zu Fuss gemacht haben : die Hälfte auf die letzte gewünschte Stelle addieren und abschneiden.

0,12 + 0,05 = 0,17 -> 0,1

0,16 + 0,05 = 0,21 -> 0,2