2009-09-19 10 views

Antwort

25

Wie wäre:

Math.Ceiling(myValue * 20)/20 
+0

Excellent ... Danke –

+0

predator4: Das scheint zu sein, was der OP will, mit dem '6.66 -> 6.7' Beispiel. – caf

+0

@ Predator4: Es ist in meinem Szenario korrekt (Steuerberechnung) –

1

duplizierte here und here für Ruby und Python. Es sollte nicht zu anders sein.

2

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) 
+0

MidpointRounding.AwayFromZero erlaubt kein Round UP - siehe http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx –

7

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.

+2

Math.Round lässt Round-Up nicht zu –

4

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; 
} 
Verwandte Themen