Warum ist das Ergebnis RoundTo(87.285, -2) => 87.28

Ich erwartet, dass das Ergebnis wäre 87.29. Ich habe auch versucht SimpleRoundTo, aber führt zum selben Ergebnis.

In der Hilfe gibt es auch ein "seltsames" Beispiel:
ms-help://embarcadero.rs2010/vcl/Math.RoundTo.html

RoundTo(1.235, -2) => 1.24
RoundTo(1.245, -2) => 1.24 //???

Weiß jemand, welche Funktion die ich brauche, um das Ergebnis 87.29? Ich meine: Wenn die Letzte Ziffer >= 5 aufrunden, wenn < 5 Runden nach unten ab. Wie in der Schule gelehrt 🙂

Benutze ich Delphi2010, und SetRoundMode(rmNearest). Ich habe auch versucht mit rmTruncate.
Der Wert 87.285 gespeichert ist, in eine double variable.

Auch seltsam:

SimpleRoundTo(87.285, -2) => 87.29

aber

x := 87.285; //double
SimpleRoundTo(x, -2) => 87.28
Google "Bankers rounding"
Wie bereits von David und Rob unten, dem obigen Kommentar ist nicht so groß, wie es vielleicht zunächst erscheinen.

InformationsquelleAutor markus_ja | 2011-03-04

Schreibe einen Kommentar