solo redondear mostrar hacia decimales arriba c# .net decimal int

mostrar - c# redondear decimales hacia arriba



La mejor forma de obtener un número entero como parte de un número decimal (6)

Creo que System.Math.Truncate es lo que estás buscando.

¿Cuál es la mejor manera de devolver la parte del número entero de un decimal (en c #)? (Esto tiene que funcionar para números muy grandes que pueden no encajar en un int).

GetIntPart(343564564.4342) >> 343564564 GetIntPart(-323489.32) >> -323489 GetIntPart(324) >> 324

El propósito de esto es: estoy insertando en un campo decimal (30,4) en la base de datos, y quiero asegurarme de que no intento insertar un número que sea demasiado largo para el campo. La determinación de la longitud de la parte del número entero del decimal es parte de esta operación.


Depende de lo que estás haciendo.

Por ejemplo:

//bankers'' rounding - midpoint goes to nearest even GetIntPart(2.5) >> 2 GetIntPart(5.5) >> 6 GetIntPart(-6.5) >> -6

o

//arithmetic rounding - midpoint goes away from zero GetIntPart(2.5) >> 3 GetIntPart(5.5) >> 6 GetIntPart(-6.5) >> -7

El valor predeterminado es siempre el primero, lo que puede ser una sorpresa, pero tiene muy buen sentido .

Tu lanzamiento explícito servirá:

int intPart = (int)343564564.5 // intPart will be 343564564 int intPart = (int)343564565.5 // intPart will be 343564566

Por la forma en que redactaste la pregunta, parece que esto no es lo que quieres; quieres dejarlo todo el tiempo.

Yo lo haría:

Math.Floor(Math.Abs(number));

También verifique el tamaño de su decimal : pueden ser bastante grandes, por lo que es posible que necesite usar un long .


Forma muy fácil de separar el valor y su parte fraccionaria.

double d = 3.5; int i = (int)d; string s = d.ToString(); s = s.Replace(i + ".", "");

s es parte fraccional = 5 y
i es valor como entero = 3


Por cierto chicos, (int) Decimal.MaxValue se desbordará. No puede obtener la parte "int" de un decimal porque el decimal es demasiado grande para poner en el cuadro int. Acabo de comprobar ... es demasiado grande durante mucho tiempo (Int64).

Si quieres el bit de un valor decimal a la IZQUIERDA del punto, debes hacer esto:

Math.Truncate(number)

y devuelve el valor como ... A DECIMAL o DOBLE.

editar: ¡truncar es definitivamente la función correcta!


Solo necesitas lanzarlo, como tal:

int intPart = (int)343564564.4342

Si aún desea usarlo como un decimal en cálculos posteriores, entonces Math.Truncate (o posiblemente Math.Floor si desea un comportamiento determinado para números negativos) es la función que desea.


Public Function getWholeNumber(number As Decimal) As Integer Dim round = Math.Round(number, 0) If round > number Then Return round - 1 Else Return round End If End Function