Seite 1 von 1

Runden von Zahlen

Verfasst: Montag 7. November 2022, 20:27
von NielsWestphal
Hallo zusammen,

ich möchte in einem Formular ein Ergebnis runden, schaffe es aber nicht.
Bisher wird als Ergebnis 9 ausgegeben, obwohl aus (11+8)/2=9,5 eigentlich 10 das Ergebnis sein müsste.
Was übersehe ich? Wer kann helfen?

Auszug aus der Berechnung:

Code: Alles auswählen

    ergebnis1:=(somi1+klausur1)/2;
    RoundTo(ergebnis1,0);
                                                                           
    if DS_SoMi1['NotenKrz'] = ''
    then text:=''
    else
    if DS_Kl1['NotenKrz'] = ''
    then text:=Int64ToStr(SoMi1)
    else
    text:=Int64ToStr(ergebnis1);

Re: Runden von Zahlen

Verfasst: Montag 7. November 2022, 20:36
von NielsWestphal
Habe es erstmal selbst gelöst...

Code: Alles auswählen

    ergebnis1:=(somi1+klausur1)/2;
    if odd(somi1+klausur1)=true
    then ergebnis2:=ergebnis1+1
    else ergebnis2:=ergebnis1;
                                                               
    if DS_SoMi1['NotenKrz'] = ''
    then text:=''
    else
    if DS_Kl1['NotenKrz'] = ''
    then text:=Int64ToStr(SoMi1)
    else
    text:=Int64ToStr(ergebnis2);

Re: Runden von Zahlen

Verfasst: Dienstag 8. November 2022, 08:32
von Kurosinski
Würde es nicht ausreichen, wenn man zum Ergebnis 0,5 addiert und dann erst (ab)rundet?

Ansonsten hilft evtl.
https://wiki.freepascal.org/Round/de

Re: Runden von Zahlen

Verfasst: Dienstag 8. November 2022, 12:43
von Christoph Sprung
Guten Tag,
m. E. benötigen Sie die Round-Funktion nur einmal in der letzten Zeile:

Code: Alles auswählen

 ergebnis1:=(somi1+klausur1)/2;                                                                      
    if DS_SoMi1['NotenKrz'] = ''
    then text:=''
    else
    if DS_Kl1['NotenKrz'] = ''
    then text:=IntToStr(SoMi1)
    else
    text:= IntToStr(Round(ergebnis1));

Re: Runden von Zahlen

Verfasst: Dienstag 8. November 2022, 12:50
von Raffenberg
Hallo,
wie oben in dem Link beschrieben, rundet Delphi kaufmännisch, nicht mathematisch. Wenn ich das richtig sehe, muss man in Delphi mathematisches runden selbst programmieren: https://www.delphi-treff.de/tipps-trick ... bezeichnet.

Re: Runden von Zahlen

Verfasst: Dienstag 8. November 2022, 14:09
von Christoph Sprung
Hallo Herr Raffenberg,
Sie haben natürlich Recht. In dem vorliegenden Fall, bei dem als Nachkommastelle nur '5' auftreten kann (falls somi1 und klausur1 Notenpunkte sind), sollte es richtig werden, wenn die letzte Zeile ergänzt wird:

Code: Alles auswählen

text:= IntToStr(Round(ergebnis1 + 0.1));