¿Cuál es la mejor manera de convertir un double
a int
? ¿Se debe usar un yeso?
c#
.net
casting
type-conversion
user496949
fuente
fuente
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 dedouble
. Un lanzamiento desdedouble
hastaint
no arrojará una excepción si el valor está fuera del rango deint
en un contexto no verificado, mientras que una llamada aConvert.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.fuente
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, siSomeDouble
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
fuente
¿Si, Por qué no?
Usar la
Convert
clase también funciona bien.fuente
Convert.ToInt32
es la mejor forma de convertirfuente
La mejor manera es simplemente usar
Convert.ToInt32
. Es rápido y también se redondea correctamente.¿Por qué hacerlo más complicado?
fuente
Aquí hay un ejemplo completo
Si desea redondear el número al entero más cercano, haga lo siguiente:
fuente
Creo que la mejor manera es
Convert.ToInt32
.fuente
int myInt = (int) Math.Ceiling (myDouble);
fuente
Mis caminos son:
fuente
double_value = 0.1
cuando desea enviarlo a una etiqueta, o algo así, y no desea ningún componente fraccional, esta es la mejor manera
si quieres con solo 2, y siempre es así
fuente