¿Cómo redondeas un número a dos decimales en C #?

Quiero hacer esto usando la función Math.Round

Aquí hay algunos ejemplos:

 decimal a = 1.994444M; Math.Round(a, 2); //returns 1.99 decimal b = 1.995555M; Math.Round(b, 2); //returns 2.00 

Es posible que también desee ver el redondeo de los banqueros / round-to-even con la siguiente sobrecarga:

 Math.Round(a, 2, MidpointRounding.ToEven); 

Hay más información aquí .

Prueba esto:

 twoDec = Math.Round(val, 2) 

Personalmente, nunca redondeo nada. Manténgalo tan resuelto como sea posible, ya que el redondeo es una especie de arenque rojo en CS de todos modos. Pero desea formatear los datos para sus usuarios, y con ese fin, creo que string.Format("{0:0.00}", number) es un buen enfoque.

Si quieres una cadena

 > (1.7289).ToString("#.##") "1.73" 

O un decimal

 > Math.Round((Decimal)x, 2) 1.73m 

¡Pero recuerda! El redondeo no es distributivo, es decir. round(x*y) != round(x) * round(y) . Así que no hagas ningún redondeo hasta el final de un cálculo, de lo contrario perderás precisión.

Wikipedia tiene una buena página sobre redondeo en general.

Todos los lenguajes .NET (administrados) pueden usar cualquiera de los mecanismos de redondeo de lenguaje común (CLR). Por ejemplo, el método Math.Round () (como se menciona anteriormente) permite al desarrollador especificar el tipo de redondeo (Round-to-even o Away-from-zero). El método Convert.ToInt32 () y sus variaciones usan round-to-even . Los métodos de Techo () y Piso () están relacionados.

También puede redondear con formato numérico personalizado .

Tenga en cuenta que Decimal.Round () utiliza un método diferente de Math.Round ();

Aquí hay una posición útil sobre el algoritmo de redondeo del banquero. Vea uno de los mensajes humorísticos de Raymond aquí sobre el redondeo …

// convierte hasta dos lugares decimales

 String.Format("{0:0.00}", 140.6767554); // "140.67" String.Format("{0:0.00}", 140.1); // "140.10" String.Format("{0:0.00}", 140); // "140.00" Double d = 140.6767554; Double dc = Math.Round((Double)d, 2); // 140.67 decimal d = 140.6767554M; decimal dc = Math.Round(d, 2); // 140.67 

=========

 // just two decimal places String.Format("{0:0.##}", 123.4567); // "123.46" String.Format("{0:0.##}", 123.4); // "123.4" String.Format("{0:0.##}", 123.0); // "123" 

también puede combinar “0” con “#”.

 String.Format("{0:0.0#}", 123.4567) // "123.46" String.Format("{0:0.0#}", 123.4) // "123.4" String.Format("{0:0.0#}", 123.0) // "123.0" 

Sé que es una pregunta antigua, pero tenga en cuenta las siguientes diferencias entre la ronda de matemáticas y la ronda de formato de cadena :

 decimal d1 = (decimal)1.125; Math.Round(d1, 2).Dump(); // returns 1.12 d1.ToString("#.##").Dump(); // returns "1.13" decimal d2 = (decimal)1.1251; Math.Round(d2, 2).Dump(); // returns 1.13 d2.ToString("#.##").Dump(); // returns "1.13" 

Esto es para redondear a 2 decimales en C #:

 label8.Text = valor_cuota .ToString("N2") ; 

En VB.NET:

  Imports System.Math round(label8.text,2) 

Una cosa que quizás desee verificar es el Mecanismo de redondeo de Math.Round:

http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx

Aparte de eso, recomiendo el enfoque Math.Round (inputNumer, numberOfPlaces) sobre el * 100/100 porque es más limpio.

Debería poder especificar el número de dígitos que desea redondear utilizando Math.Round (YourNumber, 2)

Puedes leer más aquí .

string a = “10.65678”;

decimal d = Math.Round (Convert.ToDouble (a.ToString ()), 2)

  public double RoundDown(double number, int decimalPlaces) { return Math.Floor(number * Math.Pow(10, decimalPlaces)) / Math.Pow(10, decimalPlaces); } 

Math.Floor (123456.646 * 100) / 100 Regresaría 123456.64