Gibt es eine Möglichkeit, den Dezimalwert auf den nächsten 0,05-Wert in .Net aufzurunden?Wie wird der Dezimalwert auf den nächsten 0,05 Wert gerundet?
Ex:
7,125 -> 7,15
6.66 -> 6.7
Wenn sein jetzt kann mir jemand die algo zur Verfügung stellen?
Gibt es eine Möglichkeit, den Dezimalwert auf den nächsten 0,05-Wert in .Net aufzurunden?Wie wird der Dezimalwert auf den nächsten 0,05 Wert gerundet?
Ex:
7,125 -> 7,15
6.66 -> 6.7
Wenn sein jetzt kann mir jemand die algo zur Verfügung stellen?
Wie wäre:
Math.Ceiling(myValue * 20)/20
Math..::.Round Method (Decimal, Int32, MidpointRounding)
Runden mit doppelter Genauigkeit ein Gleitkommawert auf die angegebene Anzahl der Nachkommastellen. Ein Parameter gibt an, wie der Wert gerundet wird, wenn er sich in der Mitte zwischen zwei anderen Zahlen befindet.
Math.Round(1.489,2,MidpointRounding.AwayFromZero)
MidpointRounding.AwayFromZero erlaubt kein Round UP - siehe http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx –
verwenden:
Math.Round(mydecimal/0.05m, 0) * 0.05m;
Die gleiche Logik kann in T-SQL verwendet werden:
ROUND(@mydecimal/0.05, 0) * 0.05
Ich ziehe diesen Ansatz auf die selected answer einfach, weil Sie direkt die Präzision sehen benutzt.
Math.Round lässt Round-Up nicht zu –
So etwas sollte für jeden Schritt arbeiten, nicht nur 0,05:
private decimal RoundUp (decimal value, decimal step)
{
var multiplicand = Math.Ceiling (value/step);
return step * multiplicand;
}
Excellent ... Danke –
predator4: Das scheint zu sein, was der OP will, mit dem '6.66 -> 6.7' Beispiel. – caf
@ Predator4: Es ist in meinem Szenario korrekt (Steuerberechnung) –