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í