solo redondear mostrar imprimir formato float dejar decimales con c# decimal rounding bankers-rounding

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



mostrar solo 2 decimales en c# (13)

Quiero hacer esto usando la función Math.Round


// convertir hasta dos 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"


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 a los banqueros redondeando / redondeando a par con la siguiente sobrecarga:

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

Hay más información al respecto here .


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

Puedes leer más here .


Esto es para redondear a 2 lugares decimales en C #:

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

En VB.NET:

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


Personalmente nunca redondeo nada. Manténgalo lo más resuelto posible, ya que, de todos modos, el redondeo es un poco engañoso en CS. Pero sí quieres dar formato a los datos para tus usuarios, y con ese fin, encuentro esa string.Format("{0:0.00}", number) es un buen enfoque.


Prueba esto:

twoDec = Math.Round(val, 2)


Sé que es una pregunta antigua, pero tenga en cuenta las siguientes diferencias entre la ronda matemática y la cadena 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"


Si quieres una cuerda

> (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 haga redondeos hasta el final de un cálculo, de lo contrario perderá precisión.


Una cosa que puede querer comprobar es el Mecanismo de redondeo de matemáticas.

round-to-even

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


cadena a = "10.65678";

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


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

Todos los lenguajes .NET (administrados) pueden usar cualquiera de los mecanismos de redondeo del tiempo de ejecución del lenguaje común (CLR). Por ejemplo, el Math.Round() (como se mencionó 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 Ceiling() y Floor() están relacionados.

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

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

Aquí hay una posición útil sobre el algoritmo de redondeo del banco. Vea una de las publicaciones humorísticas de Raymond aquí sobre redondeo ...


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


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