Forum: Object-Pascal / Delphi-Language
Delphi
by brechi,
16. Sep 2009
Zusatzinfo:
RoundTo und SimpleRoundTo liefern auch sehr komishce Werte:
SimpleRoundTo(3.5,0) liefert 4 (wie gewünscht, rundet also auf)
SimpleRoundTo(3.35,-1) liefert 3.3 (rundet ab)
Forum: Object-Pascal / Delphi-Language
Delphi
by brechi,
16. Sep 2009
@Blup: ist mir dafür zu aufwändig.
Hier nochmal der Code falls jemand bisl testen will:
program RoundTest;
{$APPTYPE CONSOLE}
uses
Forum: Object-Pascal / Delphi-Language
Delphi
by brechi,
15. Sep 2009
So wie ich es bisher rausgefunden habe, wird immer Bankers-Round benutzt und hab ich habe keine Möglichkeit gefunden das jetzt direkt in der FPU auf kaufmännisches Runden umzustellen.
Demnach muss ich mir wohl doch eine Funktion schreiben die dem Feld der Tabelle mit Hilfe der Felddef die richtige Größe zuweist.
Falls jemand eine andere Lösung findet, bitte posten :)
Forum: Object-Pascal / Delphi-Language
Delphi
by brechi,
15. Sep 2009
Korrektur:
Die Delphi Funktion ROUND rundet immer mit rmNearest.
Die Delphi Funktion math.RoundTo rundet mit dem RoundMode.
-> Trunc(RoundTo(2.5,0)) liefert:
rmNearest: 2
rmDown: 2
rmUp: 3
rmTruncate: 2
Forum: Object-Pascal / Delphi-Language
Delphi
by brechi,
15. Sep 2009
@Forlan: Ist mir schon klar, aber ich willst nicht händich machen.
@Himitsu, Sowohl das kaufmännische Runden als auch die SetRoundMode Funktion waren mir bekannt.
Jeder der 4 Modi (rmNearest, rmDown, rmUp, rmTruncate) liefert mir mit Round(2.5) jedoch eine 2 zurück.
Nach Set8087CW google ich mal.
Forum: Object-Pascal / Delphi-Language
Delphi
by brechi,
15. Sep 2009
Hallo,
1) Wie kann man in Delphi abstellen, dass bei 2.5 (-> 2) abgerunden wird und bei 3.5 (-> 4) aufgerundet wird?
Bisher mache ich es über eine extra Funktion:
function Round(e: Extended): Extended;
begin
Result := Trunc(e);
if Frac(e) >= 0.5 then
Result := Result + 1;