2009-09-19 9 views

Odpowiedz

25

Jak o:

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

Doskonała ... Dzięki –

+0

predator4: To wydaje się być to, co PO chce, z '6,66 -> 6.7' przykład. – caf

+0

@ predator4: Jest poprawny w moim scenariuszu (obliczenie podatku) –

1

duplikatów here i here dla Ruby i Python. To nie powinno być zbyt różne.

2

Math..::.Round Method (Decimal, Int32, MidpointRounding)

Policzone podwójnej precyzji wartości zmiennoprzecinkowych do określonej liczby cyfr ułamkowych. Parametr określa sposób zaokrągleń wartości, jeśli jest w połowie drogi między dwoma innymi liczbami.

Math.Round(1.489,2,MidpointRounding.AwayFromZero) 
+0

MidpointRounding.AwayFromZero nie zezwala na Round UP - zobacz http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx –

7

Użyj tego:

Math.Round(mydecimal/0.05m, 0) * 0.05m; 

Ta sama logika może być stosowany w T-SQL:

ROUND(@mydecimal/0.05, 0) * 0.05 

wolę takie podejście do selected answer po prostu dlatego, że można bezpośrednio zobaczyć precyzję używany.

+2

Math.Round nie zezwala na zaokrąglanie w górę –

4

Coś jak to powinno działać na każdym kroku, nie tylko 0,05:

private decimal RoundUp (decimal value, decimal step) 
{ 
    var multiplicand = Math.Ceiling (value/step); 
    return step * multiplicand; 
} 
Powiązane problemy