¿Cuál es la mejor manera de convertir un double
a int
? ¿Se debe usar un yeso?
etc.
:)
¿Cuál es la mejor manera de convertir un double
a 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.Floor
etc - a pesar de que todavía se necesita un molde después.
No olvide que el rango de int
es mucho menor que el rango de double
. Un lanzamiento desde double
hasta int
no arrojará una excepción si el valor está fuera del rango de int
en 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.
int
siempre 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));
using
directivas.
si usa cast, es decir, (int)SomeDouble
truncará la parte fraccional. Es decir, si SomeDouble
fuera 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 Convert
clase 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