2010-02-08 21 views
5

Duplicar posible:
c# - How do I round a decimal value to 2 decimal places (for output on a page)valores decimales redondos hasta el más cercano de 0.01?

How to round decimal value up to nearest 0.05 value??, el ligado SO publicar también discute el tema, pero no es la salida que esperaba.

necesito para convertir los valores decimales como esto

16.489-->16.49 
16.482-->16.48 
16.425-->16.43 
7.67 --> 7.67 (no conversion) 

puedo utilizar el método de C# siguiente para convertir los valores

Math.Round(16.482*20)/20; 

pero este método no funciona para mí, se da la siguiente resultados

16.489-->16.5 
16.482-->16.5 
7.67 --> 7.7 
16.425-->16.45 

cuál es la manera elegante en C# para hacer esto.

Respuesta

14

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

¿Qué sucede si desea redondear al trimestre más cercano? para que 1.489 redondee a 1.5, pero 1.479 rondas a 1.475? – Anthony

+0

Math.Round (1.479,2, MidpointRounding.AwayFromZero) round to 1.48 – Fredou

+0

@Fredou, funciona bien ... gracias ... – RameshVel

2

¿Usted intentó

Math.Round(16.482*200)/200; 
+0

¿No hay una manera más limpia de hacerlo? –

+0

No tengo ni idea, no sé C#. Solo sé cómo funciona el código de ejemplo. Simplemente multiplica el número por el inverso de donde desea redondear, y luego divide esa suma por el mismo inverso para volver al mismo número. Puede usar la misma idea para redondear al cuarto más cercano (que es la forma en que aprendí este truco). – Anthony

+0

Podría crear una función en la que conecte el valor y lo que desea redondear, pero dado que el SO no pareció darse cuenta de que desea redondear a .005, no estoy seguro de que hubiera sido útil sugerir. – Anthony

Cuestiones relacionadas