-
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.
-
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.
-
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
-
Oh mein Gott, wie einfach. Super, vielen Dank.
-
Dann gehts auch mit RPG:
%dech(7,4 / 5,0 : 11 : 0) * 5,0
-
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
-
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;-).
-
 Zitat von Fuerchau
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.
-
 Zitat von B.Hauser
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
-
Ceiling => %dech(val + 0.49 : 11 : 0)
Floor => %dec(val : 11 : 0)
Meinst du SQL macht da was anderes?
-
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
-
By Monta in forum NEWSboard Server Job
Antworten: 1
Letzter Beitrag: 09-07-10, 13:18
-
By W.Steiner in forum Archiv NEWSblibs
Antworten: 1
Letzter Beitrag: 13-11-02, 11:15
-
By Kilianski in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 17-07-02, 17:35
-
By Ron in forum NEWSboard Server & Hardware Markt
Antworten: 0
Letzter Beitrag: 15-04-02, 15:24
-
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
-
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