eval(h) ist runden (da gibts nur eine Art!) auf die Stellenzahl des Ergebnisfeldes, eleganter und leistungsfähiger ist da %dech(), da man hier die Stellenzahl angeben kann.
eval(r) setzt denselben Würfelalgorithmus in Kraft wie die H option resdecpos und versucht bei vom Compiler erzeugten Zwischenwerten (tritt bei geschachtelten Ausdrücken auf) die Genauigkeit auf die Dezimalstellen zu verlagern und erhöht damit die Gefahr des Überlaufs und wegwerfen von gültigen Stellen vor dem Komma.

Fazit: Finger weg von eval(h) bzw. RESDECPOS, Schachtelung von Ausdrücken nicht übertreiben und die Genauigkeit selber steuern mit deklarierten Variablen als Zwischenwerten oder %dec und wenn man mit %dech rundet, darf man den Ewald getrost vergessen.

D*B

Zitat Zitat von Mr.iSeries Beitrag anzeigen
eval(r) bedeutet ja mathematische Rundung und eval(h) kaufmännische. In einigen Programmen meiner Firma habe ich Anweisungen mit eval(rh) gesehen. Wie wird hier gerundet? Erst mathematisch und dann kaufmännisch oder wie darf ich das verstehen? Vielen Dank!