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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie etwa
Math.Ceiling(v /2.5) * 2.5
?Math.Decke macht genau das, was Sie brauchen.
können Sie Math.Decke für das
Müssen Sie Math.Decke
Dauert dies ein Doppel-und Runden es nach oben auf die nächste Ganzzahl, es sei denn, der Wert ist schon gleich um eine ganze Zahl. Der Datentyp gibt es noch ein Doppelzimmer, allerdings.
Beispiel...
... drucken würde
2
.