2009-09-19 76 views

Respuesta

25

¿Qué tal:

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

excelente ... Gracias –

+0

predator4: Eso parece ser lo que quiere el OP, con el 6,66 '-> 6.7' ejemplo. – caf

+0

@ predator4: Es correcto en mi escenario (Cálculo de impuestos) –

1

duplicados here y here para Ruby y Python. No debería ser muy diferente.

2

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

Rondas un valor de coma flotante de doble precisión al número especificado de dígitos fraccionarios. Un parámetro especifica cómo redondear el valor si está a medio camino entre otros dos números.

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

MidpointRounding.AwayFromZero no permite redondear UP -ver http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx –

7

Utilice esta:

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

La misma lógica se puede utilizar en T-SQL:

ROUND(@mydecimal/0.05, 0) * 0.05 

prefiero este enfoque a la selected answer simplemente porque se puede ver directamente la precisión usado.

+2

Math.Round no permite Round UP –

4

Algo como esto debería funcionar para cualquier paso, no sólo 0,05:

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