-
RPG rechnet falsch ohne *nodebugio?
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
-
Nö, kann das nicht nachvollziehen, hier rechnets richtig mit und ohne.
V7R1 TR10.
Allerdings rechne ich konsequenterweise immer die Multiplikation bevor ich dividiere.
kf
-
Is ja nen Ding.
Danke trotzdem CF.
-
Hallo.
Konnte ich hier auf unserer Testmaschine (auch V7.1) nicht nachvollziehen.
Gruß,
Ralf
-
Hallo Ralf,
vielen Dank für die Info. Und das Programm hat richtig gerechnet?
Gruß
Stefan
-
Hallo,
ich habe das obrige Programm bei mir laufen lassen.
Egal ob mit oder ohne *nodebugio kommt bei mir 1832,60 raus.
V7.1
Gruß
Ronald
gerade noch auf einer 2. Maschine getestet. Auch hier ist V7.1 installiert. Und auch hier habe ich in beiden Fällen 1832,60 raus bekommen
-
Hallo Ronald,
auch Dir vielen Dank. Bei uns ist der Fehler reproduzierbar.
Ich habe ihn nun der IBM gemeldet und bin sehr gespannt, wie es weitergeht.
Gruß
Stefan
-
Die Zwischenergebnisse sind je nach Formel unterschiedlich.
sum = prs / 1000 * mng
sum = prs / 1000,00 * mng
sum = prs * 0.001 * mng
Per Default wird auch nicht gerundet sondern abgeschnitten!
Für eine Rundung ist
eval(h) sum = prs / 1000 * mng
erforderlich. In diesem Fall ist die Formel dann egal.
Je nach Wunsch kann auch zwischendurch mit %dech() gerundet werden.
Dies ist auch schon mal erforderlich um "kaufmännisch" korrekt zu rechnen.
Similar Threads
-
By Tonazzo in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 24-07-14, 22:12
-
By mott in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 05-11-13, 15:08
-
By BerndF in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 10-04-03, 07:01
-
By Markus Gruebl in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 04-08-01, 19:32
-
By Liebhoff in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 12-01-01, 08:50
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks