[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.790
    Die Anzahl Nachkommastellen bei Zwischenergebnissen werden bei Divisionen auf Max berechnet.
    Im SQL-Handbuch gibts Formeln für die Berechnung der benötigten Genauigkeiten.

    Die Aggregate z.B. ergeben häufig sehr große Felder z.B. 31,2.
    Werden diese nun dividiert muss vorher die max. Genauigkeit ermittelt werden. Dabei wird der Inhalt der Werte nicht geprüft.
    Im Navigator mit Konstanten wird ein Dezimalfeld ermittelt:
    3,2 => dec(2,1)
    12345,567 => dec(8,3)
    usw.

    Helfen kannst du SQL z.B. damit, dass du die Summen selber wieder auf den theoretisch maximalen Inhalt kürzt:
    sum(feld11,2) => sum(31,2)
    Wenn du nun 10000 Zeilen summierst würde 15,2 ja reichen.
    Also kann das Ergebnis der Summe auf dec(sum(xxx), 15, 2) gekürzt werden.

    Divisionen können auch mit dem Kehrwert multipliziert werden.
    Jetzt kommts auf die Genauigkeit an wie viele Nachkomma du im Ergebnis benötigst.
    Bei Multiplikation werden die Ergebniss auf (31, NK1+NK2) erwartet.

    Wenn du im Navigator mit Konstanten testest, caste diese auf die später im Programm verwendeten Hostvariablen, also z.B. dec(1234 , 11 , 2).
    Dann bekommst du da dieselben Fehlermeldungen.
    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

  2. #2
    Registriert seit
    Jul 2007
    Beiträge
    35

    Thumbs up

    Hallo Baldur,

    danke für deine Antwort. Ich habe mir jetzt so geholfen, dass ich den Divisor zu einer Float-Zahl umwandle und das Ergebnis dann wieder als Dezimal-Zahl wandle. Also so:

    Code:
        ... 
    
        case
        when af.amwst = 'E' then decimal(gk.oendv_Stamm / float(:PiStBrFE), 11, 6)
        else decimal(gk.oendv_Stamm / float(:PiStBrFV), 11, 6)
        end as shopWgNet_Stamm
    
        ...
    Dadurch wird es etwa ab der 4. Nachkommastelle etwas ungenauer, aber das nehme ich in Kauf.

    Aber zumindest kommt dann die Fehlermeldung nicht mehr und ich kann das Programm nutzen.

    Gruß

    Artur

    (bie-dro KG)

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.790
    Da wäre dann ggf. Double noch etwas genauer (17 Stellen).
    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

  4. #4
    Registriert seit
    Jul 2007
    Beiträge
    35
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Da wäre dann ggf. Double noch etwas genauer (17 Stellen).
    Ich habe es mal im System i Navigator getestet. Konnte aber keinen Unterschied zwischen Float und Double feststellen.

    Bei der Berechnung 4,63 € * 1,19 kommt bei beiden Varianten 5,509699 anstatt 5,5097 heraus. Aber damit kann ich leben.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.790
    Ja, ich verwechsle Float immer mit REAL.

    Da hilft dann immer noch round(result, 4).
    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

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.943
    Hast Du eigentlich mal versucht die (Compile/SET OPTION) Option DECRESULT anzupassen, d.h. Größe und Anzahl Dezimal-Positionen für das Ergebnis anzupassen bzw. zu erweitern?
    Birgitta Hauser

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

Similar Threads

  1. UIM-Menü bringt Fehler "Funktionstaste nicht zulässig"
    By RobertSchneider in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-07-20, 17:02
  2. SQL Nullwerte nicht zulässig trotz coalesce oder ifnull
    By Progras in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 18-11-16, 12:16
  3. SQL1003 - Verschachtelte /COPY-Anweisungen nicht zulässig
    By cziege in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 10-12-09, 12:48
  4. Embedded SQL in NoMain-Modulen nicht zulässig?
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 02-12-04, 19:14
  5. PLZ 74074 Anstellung als AS400 Operator
    By Moooo in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 19-03-02, 12:09

Tags for this Thread

Berechtigungen

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