-
Rechenproblem im/mit ILE
Hallo,
wir haben V5R4
wenn ich folgende Berechnung in einem ILE Pgm mache,
PHP-Code:
D Test S 9 3
C Eval Test = ((49 / 7) / (12 / 6))
dann sollte doch das Feld Test den Wert 3,5 enthalten oder?
ILE berechnet mir hier aber folgenden Wert 3,0
Hat irgend jemand eine Erklärung für mich
-
... works as designed: es wird Ganzzahl Arithmetrik verwendet, da die erste Berechnung rein Ganzzahlig ist und zuletzt (die Zuweisung hat die niedrigste Priorität) an eine Zahl mit drei Nachkommastellen zugewiesen, was das zuschwindeln der 0 bewirkt.
Konsequenz: nie Literale und (und in RPG auch keine Konstanten) in Rechnungen verwenden und geschachtelte Ausdrücke eher vermeiden.
D*B
Zitat von muadeep
Hallo,
wir haben V5R4
wenn ich folgende Berechnung in einem ILE Pgm mache,
PHP-Code:
D Test S 9 3
C Eval Test = ((49 / 7) / (12 / 6))
dann sollte doch das Feld Test den Wert 3,5 enthalten oder?
ILE berechnet mir hier aber folgenden Wert 3,0
Hat irgend jemand eine Erklärung für mich
-
Hallo!
Ich hatte ein ähnliches Problem. Ich wollte in einem RPG-Programm eine Prozentzahl ermitteln und rechnete " / 100". Hierbei gab es ebenfalls Probleme mit Nachkommastellen. Ich habe mit angewöhnt bei solchen Berechnungen immer den EVAL (R) zu verwenden.
Nähere Infos findest Du im RPG-Handbuch für V5R4 (SC09-2508-06) unter "Precision Rules for Numeric Operations" ab Seite 448.
-
Hallo,
die Angabe des Schlüssel-Wortes ExprOpts(*ResDecPos) (Zwischenergebnisse haben nie weniger Dezimal-Stellen als das Endergebnis) in den H-Bestimmungen beseitigt diese Probleme.
PHP-Code:
H ExprOpts(*ResDecPos)
Birgitta
-
... und schafft neue, andere.
Kalkulierbares Verhalten erreicht man am einfachsten dadurch, dass man Einzelschritte mit Variablen verwendet, dann kann man klar zum Ausdruck bringen wo man die Rechengenauigkeit braucht.
D*B
Zitat von B.Hauser
Hallo,
die Angabe des Schlüssel-Wortes ExprOpts(*ResDecPos) (Zwischenergebnisse haben nie weniger Dezimal-Stellen als das Endergebnis) in den H-Bestimmungen beseitigt diese Probleme.
PHP-Code:
H ExprOpts(*ResDecPos)
Birgitta
-
Oder beim Rechnen mit konstanten die Nachkomma eben mit angibt:
Test = ((49,0 / 7,0) / (12,0 / 6,0))
Similar Threads
-
By homue in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 18-07-07, 16:47
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By horni in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 07-12-06, 18:51
-
By kuempi von stein in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 16-10-06, 12:39
-
By Squall in forum IBM i Hauptforum
Antworten: 31
Letzter Beitrag: 28-09-06, 17:53
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