¿Cuál es la mejor manera de convertir un doublea int? ¿Se debe usar un yeso?
etc.:)
¿Cuál es la mejor manera de convertir un doublea int? ¿Se debe usar un yeso?
etc.:)
Respuestas:
Puede usar una conversión si desea el comportamiento predeterminado de truncar hacia cero. Alternativamente, es posible que desee utilizar Math.Ceiling, Math.Round, Math.Flooretc - a pesar de que todavía se necesita un molde después.
No olvide que el rango de intes mucho menor que el rango de double. Un lanzamiento desde doublehasta intno arrojará una excepción si el valor está fuera del rango de inten un contexto no verificado, mientras que una llamada a Convert.ToInt32(double)voluntad. El resultado de la conversión (en un contexto no verificado) está explícitamente indefinido si el valor está fuera del rango.
intsiempre es de 32 bits, independientemente de si está utilizando una máquina de 32 o 64 bits.
intVal = System.Convert.ToInt32(System.Math.Floor(dblVal));
using System;en la parte superior del archivo, momento en el que podría serintVal = Convert.ToInt32(Math.Floor(dblVal));
usingdirectivas.
si usa cast, es decir, (int)SomeDoubletruncará la parte fraccional. Es decir, si SomeDoublefuera 4.9999, el resultado sería 4, no 5. La conversión a int no redondea el número. Si quieres usar redondeoMath.Round
¿Si, Por qué no?
double someDouble = 12323.2;
int someInt = (int)someDouble;
Usar la Convertclase también funciona bien.
int someOtherInt = Convert.ToInt32(someDouble);
Convert.ToInt32 es la mejor forma de convertir
Aquí hay un ejemplo completo
class Example
{
public static void Main()
{
double x, y;
int i;
x = 10.0;
y = 3.0;
// cast double to int, fractional component lost (Line to be replaced)
i = (int) (x / y);
Console.WriteLine("Integer outcome of x / y: " + i);
}
}
Si desea redondear el número al entero más cercano, haga lo siguiente:
i = (int) Math.Round(x / y); // Line replaced
Mis caminos son:
- Convert.ToInt32(double_value)
- (int)double_value
- Int32.Parse(double_value.ToString());
double_value = 0.1