Runde auf die nächste höhere Zahl

Möchte ich Runde einen Wert (double) an den nächsten (immer aufgerundet) Anzahl. Die Rundung kann definiert werden, indem eine beliebige Anzahl.

Exp.:

Runde bis zu den nächsten 2.50

0.00       --> 0.00
0.01       --> 2.50
2.49       --> 2.50
2.50       --> 2.50
2.50000001 --> 5.00
...

Dem Algorithmus zu tun, das ist einfach (wenn 'Zahl' war negativ * -1):

Math.Round((Math.Abs(number) + tolerance) / 2.50, MidpointRounding.AwayFromZero) * 2.50

Toleranz ist folgendermaßen definiert:

tolerance = 2.50 / 2 - Math.Pos(10, -x);

Aber ich weiß nicht, wie bestimmen Sie x! Weil im Falle von der 1.-4. B. x sollte 0,01 im Falle des 5. B. sollte es 0.0000001 und so weiter...

Suchergebnisse nur raten, analysiert die Zeichenfolge eine dezimal-Zahl und zählen Sie die dezimale Ziffer. Gibt es keinen mathematischen Weg? Ansonsten habe ich auf die Behandlung mit verschiedenen locale-Einstellungen für dezimal-Trennzeichen und zahlen ohne Dezimalstellen (keine dezimal-Trennzeichen zu entfernen).

Vielleicht hat jemand eine Lösung für mein Problem. Danke!

Freundlichen GRÜßEN, Danny

InformationsquelleAutor dannyyy | 2011-10-13
Schreibe einen Kommentar