round ejemplos decimals c# math floor

ejemplos - math.round c#



¿Por qué Math.Floor(Double) devuelve un valor de tipo Double? (6)

Necesito obtener el valor entero del lado izquierdo de un decimal o doble. Por ejemplo: necesito obtener el valor 4 de 4.6. Intenté usar la función Math.Floor pero está devolviendo un valor doble, por ejemplo: está devolviendo 4.0 de 4.6. La documentación de MSDN dice que devuelve un valor entero. ¿Me estoy perdiendo de algo? ¿O hay una forma diferente de lograr lo que estoy buscando? Gracias.


El piso lo deja como un doble para que puedas hacer más cálculos dobles con él. Si lo quiere como int, arroje el resultado de floor como int. No copie el doble original como int porque las reglas para el piso son diferentes (IIRC) para los números negativos.



Según MSDN, Math.Floor (double) devuelve un doble: http://msdn.microsoft.com/en-us/library/e0b5f0xb.aspx

Si lo quieres como int:

int result = (int)Math.Floor(yourVariable);

Puedo ver cómo el artículo de MSDN puede ser engañoso, deberían haber especificado que, si bien el resultado es un "entero" (en este caso, un número entero), sigue siendo de TYPE Double


Si solo necesitas la parte entera de un número, coloca el número en un int . Esto truncará el número en el punto decimal.

double myDouble = 4.6; int myInteger = (int)myDouble;


El rango de double es mucho más amplio que el rango de int o long . Considera este código:

double d = 100000000000000000000d; long x = Math.Floor(d); // Invalid in reality

El número entero está fuera del rango de long , entonces, ¿qué esperarías que sucediera?

Por lo general, usted sabe que el valor en realidad estará dentro del rango de int o long , por lo que lo lanza:

double d = 1000.1234d; int x = (int) Math.Floor(d);

pero la carga del lanzamiento está en el desarrollador, no en Math.Floor . Hubiera sido innecesariamente restrictivo hacer que simplemente fallara con una excepción para todos los valores fuera del rango de long .


Convert.ToInt32(Math.Floor(Convert.ToDouble(value)))

Esto le dará el valor exacto que desea, si toma 4.6 devuelve 4 como salida.