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
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);
Use Math.Round y especifique la cantidad de decimales.
Math.Round(pay,2);
Redondea un valor de coma flotante de precisión doble a un número específico de dígitos fraccionarios.
O método matemático de resonancia (decimal, Int32)
Redondea un valor decimal a un número específico de dígitos fraccionarios.
Use System.Math.Round para redondear un valor decimal a un número específico de dígitos fraccionarios.
var pay = 200 + bonus;
pay = System.Math.Round(pay, 2);
Console.WriteLine(pay);
Referencias de MSDN:
Console.WriteLine(decimal.Round(pay,2));
decimal pay = 1.994444M;
Math.Round(pay , 2);