[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.792
    Noch mal komplett:

    eval faktor = %int(Wert:Rundung);

    select;
    when faktor * rundung = wert;
    neuerwert = wert;
    when wert > *zero;
    neuerWert = (faktor + 1) * rundung;
    other;
    neuerwert = (faktor - 1) * rundung;
    endsl;

    7,5 / 5 = 1
    when 1 * 5 = 7,5 => 7,5
    when 7,5 > 0 => (1+1) * 5 = 10
    other => (1-1) * 5 = 0

    -7,5 / 5 = -1
    when -1 * 5 = -7,5 => -7,5
    when -7,5 > 0 => (-1+1) * 5 = 0
    other => (-1-1) * 5 = -10

    Das ganze dann in eine schöne Funktion "VRunden" gepackt.
    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
    Sep 2004
    Beiträge
    362
    sorry das kann nicht richtig sein.
    Bei einem Wert von 7,5 und einer Rundung muss 10 als Ergebnis kommen. Bei einem Wert von z.B.: bei 7,49 muss 5 kommen, weil 7,49 näher an 5 ist als an 10.
    Ich mache es jetzt anders:
    Wert = 7,5
    Rundung = 5
    Do x

    if (x * 5) > 7,49
    if %abs((x*5)-7,49) < %abs(((x-1)*5)-7,49)
    eval Ergebnis = (x-1)*5
    else
    eval Ergebnis = x*5
    EndIf
    EndIf
    x =+
    Enddo

    Bei einem minus Input Value muss es umgekehrt geprüft werden.
    Ich packe das mal in eine Funktion.

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.943
    Einfach: Dividieren, Runden und danach multiplizieren

    Ich hab's jetzt hier nur mit SQL ... aber in RPG sollte es genauso funktionieren:

    Code:
    Values(Round(7,4 / 5,0 , 0) * 5);
    Values(Round(7,5 / 5,0 , 0) * 5);
    Values(Round(7,6 / 5,0 , 0) * 5);
    Liefert: 5, 10, 10
    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

  4. #4
    Registriert seit
    Sep 2004
    Beiträge
    362
    Oh mein Gott, wie einfach. Super, vielen Dank.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.792
    Dann gehts auch mit RPG:

    %dech(7,4 / 5,0 : 11 : 0) * 5,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

  6. #6
    Registriert seit
    Jan 2007
    Beiträge
    1.025
    Ich fass es nicht. Dieser Meccano ist doch seit S/34 Zeiten bekannt. Klar, wir müssen hier natürlich auch mit 5er Rundungen leben. Mit ensprechendem Multiplikator und Divisor funktioniert das in allen Schattierungen bis man lustig ist. Mal schauen ob das die KI auch weiss.
    kf

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.792
    Meine 1. Lösung war mal gedacht zum generellen Aufrunden.
    Z.B. bei Preiskalulationen auf die nächste schöne Zahl hochrunden, z.B. auf 0,25 oder 2,50 oder bei großen Werten auch gerne af 250 oder 500.
    Dabei sollte eben nicht gerundet werden, wenn das Ergebnis bereits passte.
    Negative Werte wurden auch aufgerundet, also von -1,20 auf -1,00, um z.B. bei Rechnungen einen höheren Wert als bei Gutschriften zu haben. Das Wertrisiko liegt da beim Kunden.

    Interessant ist, dass man für alles und jedes nun SQL nehmen soll;-).
    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

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.943
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Meine 1. Lösung war mal gedacht zum generellen Aufrunden.
    Z.B. bei Preiskalulationen auf die nächste schöne Zahl hochrunden, z.B. auf 0,25 oder 2,50 oder bei großen Werten auch gerne af 250 oder 500.
    Dabei sollte eben nicht gerundet werden, wenn das Ergebnis bereits passte.
    Negative Werte wurden auch aufgerundet, also von -1,20 auf -1,00, um z.B. bei Rechnungen einen höheren Wert als bei Gutschriften zu haben. Das Wertrisiko liegt da beim Kunden.

    Interessant ist, dass man für alles und jedes nun SQL nehmen soll;-).
    Das war aber nicht gefragt!
    ... und wenn, warum sollte man sich in RPG die Fingerchen brechen wenn es in SQL die Funktion CEILING gibt. Diese kann man dann in RPG einbinden genauso mit Division und Multiplikation einsetzen.
    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

  9. #9
    Registriert seit
    Jan 2007
    Beiträge
    1.025
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Das war aber nicht gefragt!
    ... und wenn, warum sollte man sich in RPG die Fingerchen brechen wenn es in SQL die Funktion CEILING gibt. Diese kann man dann in RPG einbinden genauso mit Division und Multiplikation einsetzen.
    Birgitta, ich versteh es ja, du verdienst dir mit deiner SQL Kompetenz deine Brötchen. Nur, warum soll ich mir einen SQL Overhead antun, wenn es mit zwei simplen RPG Statements auch geht und das Ganze sogar noch nachhaltiger ist. SQL ist auch nicht immer der letzte Schrei.
    kf

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.792
    Ceiling => %dech(val + 0.49 : 11 : 0)
    Floor => %dec(val : 11 : 0)

    Meinst du SQL macht da was anderes?
    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

  11. #11
    Registriert seit
    Jan 2007
    Beiträge
    1.025
    Und ganz vermessen, wenn man ChatGPT nach der SQL Rundung frägt:

    SELECT Wert, ROUND(Wert * 2, 0) / 2 AS GerundeterWert
    FROM MeineTabelle;

    oder so:
    SELECT ROUND(12.345 * 2, 0) / 2 AS GerundeteZahl from sysibm.sysdummy1

    Merke, das in Deutsch und funktioniert auch noch.
    kf

Similar Threads

  1. Antworten: 1
    Letzter Beitrag: 09-07-10, 13:18
  2. Von RPG auf ILE-RPG oder ILE-RPG überarbeiten !
    By W.Steiner in forum Archiv NEWSblibs
    Antworten: 1
    Letzter Beitrag: 13-11-02, 11:15
  3. Von RPG auf ILE-RPG
    By Kilianski in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 17-07-02, 17:35
  4. Zu verkaufen: RPG/400, RPG/ILE und ADTS/400 !!!
    By Ron in forum NEWSboard Server & Hardware Markt
    Antworten: 0
    Letzter Beitrag: 15-04-02, 15:24
  5. Frage zu RPG: Aufruf RPG-Programm mit Parametern
    By hs in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 09-10-01, 13:06

Tags for this Thread

Berechtigungen

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