Wenn es wirklich um "Runden" ginge, gäbe es die, aber das was du willst, hat mit Runden nicht viel zu tun. Vorschlag: Unterprogramm schreiben, Betrag übergeben, letzte Stelle abfragen, entsprechend ändern, neuen Betrag zurückgeben.kostonstyle hat geschrieben:wenn ich die zahl 259.93 habe möchte ich, dass es auf 259.95 aufgerundet wird,
aber wenn 259.92 auf 259.90 abgerundet wird.
Code: Alles auswählen.
DATA: zahl1 TYPE p DECIMALS 2 VALUE '706.50',
zahl2 TYPE p DECIMALS 2,
zahl3 TYPE p DECIMALS 2,
zahl4 TYPE i,
zahl5 TYPE p DECIMALS 2,
result TYPE kwert.
*&---------------------------------------------------------------------*
*& Start Programmmain
*&---------------------------------------------------------------------*
START-OF-SELECTION.
zahl2 = zahl1 * 10.
COMPUTE zahl2 = FLOOR( zahl2 ).
WRITE / zahl2.
SKIP.
SKIP.
zahl3 = zahl1 * 10.
zahl4 = ( zahl3 - zahl2 ) * 10.
WRITE: zahl4.
SKIP.
SKIP.
CASE zahl4.
WHEN '0'.
result = zahl1.
WHEN '1'.
result = zahl2 / 10.
WHEN '2'.
result = zahl2 / 10.
WHEN '3'.
zahl4 = 5 - zahl4.
zahl5 = zahl4 / 100.
result = zahl1 + zahl5.
WHEN '4'.
zahl4 = 5 - zahl4.
zahl5 = zahl4 / 100.
result = zahl1 + zahl5.
WHEN '5'.
result = zahl1.
WHEN '6'.
zahl4 = zahl4 - 5.
zahl5 = zahl4 / 100.
result = zahl1 - zahl5.
WHEN '7'.
zahl4 = zahl4 - 5.
zahl5 = zahl4 / 100.
result = zahl1 - zahl5.
WHEN '8'.
zahl4 = 10 - zahl4.
zahl5 = zahl4 / 100.
result = zahl1 + zahl5.
WHEN '9'.
zahl4 = 10 - zahl4.
zahl5 = zahl4 / 100.
result = zahl1 + zahl5.
ENDCASE.
WRITE: / result.
END-OF-SELECTION.
????kostonstyle hat geschrieben:ich habe eben die funktion nicht gefunden. habe es gesucht und gesucht, ohne erfolg
Code: Alles auswählen.
temp_var = deine_zahl * 2 .
Call Function 'ROUND'
exporting
decimals = 1
input = temp_var
sign = 'X'
importing
output = temp_var.
dein_ergebnis = temp_var / 2 .
Da die 2. Nachkommastelle gerundet werden soll und nicht die erste muss 20 als Faktor herhalten und nicht 2.DeathGuardian hat geschrieben:Nehm den Wert mal 2, benutz dann den FuBa "Round"(mit Kaufmännisch Runden auf eine dec-stelle) und Teil das Ergebnis wieder durch 2.
Code: Alles auswählen.
zahl = round( zahl * 20 ) / 20.
Bei meiner Lösung mit dem FuBa reicht die 2.black_adept hat geschrieben:Da die 2. Nachkommastelle gerundet werden soll und nicht die erste muss 20 als Faktor herhalten und nicht 2.DeathGuardian hat geschrieben:Nehm den Wert mal 2, benutz dann den FuBa "Round"(mit Kaufmännisch Runden auf eine dec-stelle) und Teil das Ergebnis wieder durch 2.
Code: Alles auswählen.
zahl = round( zahl * 20 ) / 20.