software issues issue example create all c# .net casting type-conversion

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í