visual truncar solo redondear quitar poner mostrar imprimir formato float decimales controlar con como cantidad c# variables decimal rounding

truncar - quitar decimales sin redondear c#



Redondeando una variable a dos decimales C# (8)

Asegúrese de proporcionar un número, generalmente se usa un doble. Math.Round puede tomar 1-3 argumentos, el primer argumento es la variable que desea redondear, el segundo es el número de decimales y el tercero es el tipo de redondeo.

double pay = 200 + bonus; double pay = Math.Round(pay); // Rounds to nearest even number, rounding 0.5 will round "down" to zero because zero is even double pay = Math.Round(pay, 2, MidpointRounding.ToEven); // Rounds up to nearest number double pay = Math.Round(pay, 2, MidpointRounding.AwayFromZero);

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

Estoy interesado en cómo redondear las variables a dos decimales. En el siguiente ejemplo, la bonificación suele ser un número con cuatro decimales. ¿Hay alguna forma de garantizar que la variable de pago siempre se redondee a dos lugares decimales?

pay = 200 + bonus; Console.WriteLine(pay);


Deberías usar una forma de Math.Round . Tenga en cuenta que Math.Round predeterminado el redondeo bancario (redondeando al número par más cercano) a menos que especifique un valor de MidpointRounding . Si no desea usar el redondeo bancario, debe usar Math.Round(decimal d, int decimals, MidpointRounding mode) , así:

Math.Round(pay, 2, MidpointRounding.AwayFromZero); // .005 rounds up to 0.01 Math.Round(pay, 2, MidpointRounding.ToEven); // .005 rounds to nearest even (0.00) Math.Round(pay, 2); // Defaults to MidpointRounding.ToEven

( ¿Por qué .NET utiliza el redondeo bancario? )


Preste atención al hecho de que las rondas Round .

Entonces (no sé si importa en su industria o no), pero:

float a = 12.345f; Math.Round(a,2); //result:12,35, and NOT 12.34 !

Para que sea más preciso para su caso , podemos hacer algo como esto:

int aInt = (int)(a*100); float aFloat= aInt /100.0f; //result:12,34


Puede redondear el resultado y usar una string.Format para establecer la precisión de esta manera:

decimal pay = 200.5555m; pay = Math.Round(pay + bonus, 2); string payAsString = string.Format("{0:0.00}", pay);




Console.WriteLine(decimal.Round(pay,2));


decimal pay = 1.994444M; Math.Round(pay , 2);