truncar round redondear quitar poner limitar hacia entero decimales como arriba acortar c#

round - ¿Cómo redondear el valor C#al entero más cercano?



redondear hacia arriba en c (7)

C # usa el redondeo Math.Round en Math.Round en forma predeterminada. Deberías usar esta sobrecarga:

Math.Round(0.5d, MidpointRounding.AwayFromZero) //1 Math.Round(0.4d, MidpointRounding.AwayFromZero) //0

Quiero redondear doble a int.

P.ej,

double a=0.4, b=0.5;

Quiero cambiarlos a ambos enteros.

así que eso

int aa=0, bb=1;

aa es de a y bb es de b .

¿Alguna fórmula para hacer eso?


Echa un vistazo a Math.Round . A continuación, puede convertir el resultado a un int .


Es simple. Así que sigue este código.

decimal d = 10.5; int roundNumber = (int)Math.Floor(d + 0.5);

El resultado es 11


Math.Round (0.5) devuelve cero debido a errores de redondeo de punto flotante, por lo que deberá agregar una cantidad de error de redondeo al valor original para asegurarse de que no se redondee hacia abajo, por ejemplo.

Console.WriteLine(Math.Round(0.5, 0).ToString()); // outputs 0 (!!) Console.WriteLine(Math.Round(1.5, 0).ToString()); // outputs 2 Console.WriteLine(Math.Round(0.5 + 0.00000001, 0).ToString()); // outputs 1 Console.WriteLine(Math.Round(1.5 + 0.00000001, 0).ToString()); // outputs 2 Console.ReadKey();


Usa Math.Ceiling para redondear

Math.Ceiling(0.5); // 1

Usa Math.Round para redondear solo

Math.Round(0.5, MidpointRounding.AwayFromZero); // 1

Y Math.Floor para redondear hacia abajo.

Math.Floor(0.5); // 0


Use una función en lugar de MidpointRounding.AwayFromZero :

myRound(1.11125,4)

Respuesta: - 1.1114

public static Double myRound(Double Value, int places = 1000) { Double myvalue = (Double)Value; if (places == 1000) { if (myvalue - (int)myvalue == 0.5) { myvalue = myvalue + 0.1; return (Double)Math.Round(myvalue); } return (Double)Math.Round(myvalue); places = myvalue.ToString().Substring(myvalue.ToString().IndexOf(".") + 1).Length - 1; } if ((myvalue * Math.Pow(10, places)) - (int)(myvalue * Math.Pow(10, places)) > 0.49) { myvalue = (myvalue * Math.Pow(10, places + 1)) + 1; myvalue = (myvalue / Math.Pow(10, places + 1)); } return (Double)Math.Round(myvalue, places); }


Math.Round

Redondea un valor de coma flotante de precisión doble al valor integral más cercano.