2009-09-19 11 views

risposta

25

ne dite:

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

eccellente ... Grazie –

+0

predator4: Che sembra essere quello che l'OP vuole, con il 6,66 '-> 6.7' esempio. – caf

+0

@ predator4: è corretto nel mio scenario (calcolo fiscale) –

1

duplicato here e here per Ruby e Python. Non dovrebbe essere troppo diverso.

2

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

Arrotonda un valore a virgola mobile a doppia precisione al numero specificato di cifre decimali. Un parametro specifica come arrotondare il valore se si trova a metà strada tra altri due numeri.

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

MidpointRounding.AwayFromZero non consente di arrotondare UP -see http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx –

7

Utilizzare questa:

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

La stessa logica può essere utilizzato in T-SQL:

ROUND(@mydecimal/0.05, 0) * 0.05 

preferisco questo approccio al selected answer semplicemente perché si può vedere direttamente la precisione Usato.

+2

Math.Round non consente di arrotondare –

4

Qualcosa del genere dovrebbe funzionare per qualsiasi passo, non solo 0,05:

private decimal RoundUp (decimal value, decimal step) 
{ 
    var multiplicand = Math.Ceiling (value/step); 
    return step * multiplicand; 
} 
Problemi correlati