Etherion
02-09-15, 13:57
Hallo zusammen,
ich habe ein seltsames Phänomen auf unserer Anlage:
Der Fachbereich hat moniert dass Rechnungsbeträge nicht stimmen. Es gibt Rundungsdifferenzen.
Im Source habe ich eine Beispielkonstellation angegeben:
// ctl-opt option(*nodebugio); // mit *nodebugio richtig ohne falsch
dcl-s prs packed(11:2) inz(5390); // Tausenderpreis
dcl-s mng packed(9:0) inz(340); // Menge
dcl-s sum packed(9:2) inz(0); // Gesamtpreis
// 5390,00 / 1000 * 340 = 1832,60 <> 1832,59 !!!
sum = prs / 1000 * mng;
dsply '' '' sum;
*inlr = *on;
Ich hätte folgendes Ergebnis erwartet:
5390,00 / 1000 * 340 = 1832,6
Errechnet wurde 1832,59.
Und jetzt wird’s komisch: Nachdem ich die die Compiler Anweisung „ctl-opt option(*nodebugio);“ hinzufüge rechnet das Programm richtig.
Könnt ihr den Fehler nachvollziehen?
Wir fahren 7.1 mit aktuellem PTF Stand.
Freundliche Grüße
Stefan
ich habe ein seltsames Phänomen auf unserer Anlage:
Der Fachbereich hat moniert dass Rechnungsbeträge nicht stimmen. Es gibt Rundungsdifferenzen.
Im Source habe ich eine Beispielkonstellation angegeben:
// ctl-opt option(*nodebugio); // mit *nodebugio richtig ohne falsch
dcl-s prs packed(11:2) inz(5390); // Tausenderpreis
dcl-s mng packed(9:0) inz(340); // Menge
dcl-s sum packed(9:2) inz(0); // Gesamtpreis
// 5390,00 / 1000 * 340 = 1832,60 <> 1832,59 !!!
sum = prs / 1000 * mng;
dsply '' '' sum;
*inlr = *on;
Ich hätte folgendes Ergebnis erwartet:
5390,00 / 1000 * 340 = 1832,6
Errechnet wurde 1832,59.
Und jetzt wird’s komisch: Nachdem ich die die Compiler Anweisung „ctl-opt option(*nodebugio);“ hinzufüge rechnet das Programm richtig.
Könnt ihr den Fehler nachvollziehen?
Wir fahren 7.1 mit aktuellem PTF Stand.
Freundliche Grüße
Stefan