Quelle est la meilleure façon de convertir un double en Int. Utiliser le casting?
Réponses
Trop de publicités?Vous pouvez utiliser un cast si vous voulez que le défaut de tronquer vers zéro comportement. Alternativement, vous pouvez utiliser Math.Ceiling
, Math.Round
, Math.Floor
etc - bien que vous aurez toujours besoin d'une fonte par la suite.
N'oubliez pas que la plage de int
est beaucoup plus petite que la gamme de double
. Un casting de double
de int
de ne pas lever une exception si la valeur est en dehors de la plage de int
dans un décoché contexte, alors qu'un appel à l' Convert.ToInt32(double)
sera. Le résultat de la fonte (dans un décoché contexte) n'est pas défini explicitement si la valeur est en dehors de la plage.
Voici un exemple complet
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 vous souhaitez arrondir le nombre à l'entier le plus proche, procédez comme suit:
i = (int) Math.Round(x / y); // Line replaced