172 votes

convertir double en int

Quelle est la meilleure façon de convertir un double en Int. Utiliser le casting?

256voto

Jon Skeet Points 692016

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.

43voto

Armen Tsirunyan Points 59548

si vous utilisez la conversion, c’est-à-dire (int)SomeDouble vous tronquerez la partie fractionnaire. Autrement dit, si SomeDouble étaient 4,9999, le résultat serait 4, pas 5. La conversion en int ne arrondit pas le nombre. Si vous voulez arrondir, utilisez Math.Round

39voto

Jeff Mercado Points 42075

Ouais pourquoi pas?

 double someDouble = 12323.2;
int someInt = (int)someDouble;
 

L'utilisation de la classe Convert fonctionne également bien.

 int someOtherInt = Convert.ToInt32(someDouble);
 

6voto

anishMarokey Points 6895

Convert.ToInt32 est le meilleur moyen de convertir

1voto

mariana soffer Points 1081

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
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X