[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    309

    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

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... 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 Zitat von muadeep Beitrag anzeigen
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Oct 2005
    Beiträge
    16
    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.

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... 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 Zitat von B.Hauser Beitrag anzeigen
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Oder beim Rechnen mit konstanten die Nachkomma eben mit angibt:

    Test = ((49,0 / 7,0) / (12,0 / 6,0))
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. ILE RPG / SQL Füllen einer Feldgruppe
    By homue in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-07-07, 16:47
  2. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  3. ILE Umwandlung per FNDSTRPDM
    By horni in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-12-06, 18:51
  4. ILE aus Feld rechts Blanks abschneiden und mit move übertragen
    By kuempi von stein in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 16-10-06, 12:39
  5. Return ILE RPG
    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
  •