SetRoundMode Verständnisproblem (BDS2009)



  • Hallo,

    Ich will Dezimalzahlen zur nächsten ganzen Zahl aufrunden. Dazu wollte ich so vorgehen:

    SetRoundMode(rmUp);
    Gerundet = RoundTo(Zahl,0);
    

    Im BCB6 funktionierte das Aufrunden so wie von mir erwartet. Im BDS2009 wird interessanterweise unabhängig von der Einstellung des Rundungsmodus mathematisches Runden angewendet: zur nächsten geraden Zahl.

    Kann mir jemand meinen Fehler zeigen? Google war leider wenig hilfreich zu dem Thema.



  • Guckst du mal hier:

    http://www.delphipraxis.net/112284-problem-mit-roundto-100*0-01-0-a-2.html

    Hab ich übrigens per Google Suche gefunden: "BDS2009 RoundTo"



  • Danke Burkhi, den Thread hatte ich auch gefunden, beschreibt aber nicht mein Problem. Dort wird der Effekt durch die Gleitkomma-Ungenauigkeit im Zusammenhang mit Truncate verursacht. Beim von mir beschriebenen Problem wird jedoch die Einstellung von SetRoundMode ignoriert.

    Dass das so ist, wird auch klar, wenn man sich die math.pas anschaut. Die Hilfe sagt aber was anderes. Wo der Fehler liegt, ist vielleicht Ansichtssache. Ist das in neueren Versionen vom BDS auch so implementiert?

    Ich verwende jetzt ceil() aus der math.h.


Anmelden zum Antworten