[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    122
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Hallo,

    Soweit ich weiss, wird bei der Erweiterung (R) nur sichergestellt, dass keine Dezimal-Stellen abgeschnitten werden.

    Birgitta
    ILE-RPG rechnet doch immer mit allen Dezimalstellen auch ohne Angabe von (R)oder täusche ich mich?

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.379
    selbstverständlich geht das nicht immer:
    ergebnis = 1/7 * 3/8 erfordert die Anlage von Zwischenvariablen und 1/7 hat beliebig viele Nachkommastellen! Das heißt der Compiler legt eine entsprechende Variable an. Bei einigen Operationen (malnehmen zum Beispiel) braucht man mehr Vorkommastellen, bei anderen Nachkommastellen. Bei geschachtelten Ausdrücken reicht dann der Platz nicht mehr und der Compiler muss sich entscheiden, ob er vorne Luft lässt oder hinten...

    D*B

    Zitat Zitat von Mr.iSeries Beitrag anzeigen
    ILE-RPG rechnet doch immer mit allen Dezimalstellen auch ohne Angabe von (R)oder täusche ich 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
    Feb 2001
    Beiträge
    20.751
    Zum Rechnen wird intern das maximum der Stellen (31/63) verwendet, um das Ergebnis zu erhalten.
    Dabei gibts ja mathematische Regeln, die die Anzahl Nachkomma bestimmen.
    Ist das Zielfeld groß genug um das Ergebnis aufzunehmen, gibts keine Probleme.
    Nur wenn Zwischenergebnisse größer als das Zielfeld bzw. 31/63 Vorkommastellen werden können, werden die Nachkommastellen reduziert !

    Mittels eval(r) wird das Abschneiden der Nachkommastellen verhindert, somit stehen weniger Vorkommastellen zur Verfügung.
    Passt nun das Zwischenergebnis nicht, gibts hier bereits einen Überlauffehler (MCH).

    Das (h) steht einfach nur für kaufmännisch runden.

    Im übrigen arbeitet %DEC (abschneiden) und %DECH (runden) genauso. Allerdings kann man dann Zwischenergebnisse per %DEC/%DECH besser beeinflussen.

    Nehme ich Dieters Beispiel nun, kann das Ergbnis ganz anders aussehen:
    ergebnis = %dec(1/7:5:5) * %dech(3/8:5:2)

    Es kommt also auf die persönlich gewünschte Genauigkeit an, die bei Einzelbefehlen (ADD/SUB/MULT/DIV) nun mal anders aussieht als bei komplexen Formeln.
    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. Bedeutung der Codes im LIC-Log
    By jc_denton in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 30-01-08, 08:40

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •