c# - example - jira rest api get all issues
convertir doble a int (10)
¿Cuál es la mejor forma de convertir un double
en un int
? ¿Debería usarse un yeso?
¿Si, Por qué no?
double someDouble = 12323.2;
int someInt = (int)someDouble;
Usar la clase Convert
también funciona bien.
int someOtherInt = Convert.ToInt32(someDouble);
Creo que la mejor manera es Convert.ToInt32
.
La mejor manera es simplemente usar Convert.ToInt32
. Es rápido y también se redondea correctamente.
¿Por qué hacerlo más complicado?
Mis formas son:
- Convert.ToInt32(double_value)
- (int)double_value
- Int32.Parse(double_value.ToString());
Puedes usar un molde si quieres el comportamiento truncado-hacia-cero predeterminado. Alternativamente, es posible que desee utilizar Math.Ceiling
, Math.Ceiling
, Math.Round
, etc., aunque aún necesitará un yeso después.
No olvide que el rango de int
es mucho más pequeño que el rango de double
. Un lanzamiento de double
a int
no arrojará una excepción si el valor está fuera del rango de int
en un contexto no verificado, mientras que una Convert.ToInt32(double)
a Convert.ToInt32(double)
hará. El resultado del lanzamiento (en un contexto no verificado) está explícitamente indefinido si el valor está fuera del rango.
int myInt = (int) Math.Ceiling (myDouble);
si usa cast, es decir, (int)SomeDouble
, truncará la parte fraccionaria. Es decir, si SomeDouble
fuera 4.9999 el resultado sería 4, no 5. Convertir a int no redondea el número. Si desea redondear use Math.Round
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
label8.Text = "" + years.ToString("00") + " years";
cuando desea enviarlo a una etiqueta, o algo así, y no desea ningún componente fraccionario, esta es la mejor manera
label8.Text = "" + years.ToString("00.00") + " years";
si quieres con solo 2, y siempre es así