Quelle est la meilleure façon de convertir un doubleen un int? Doit-on utiliser un plâtre?
etc.:)
                Quelle est la meilleure façon de convertir un doubleen un int? Doit-on utiliser un plâtre?
etc.:)
                Réponses:
Vous pouvez utiliser un cast si vous voulez le comportement par défaut de tronquer vers zéro. Alternativement, vous pouvez utiliser Math.Ceiling, Math.Round, Math.Flooretc - mais vous aurez toujours besoin d' un plâtre après.
N'oubliez pas que la plage de intest beaucoup plus petite que celle de double. Un cast de doublevers intne lèvera pas d'exception si la valeur est en dehors de la plage de intdans un contexte non vérifié, alors qu'un appel à Convert.ToInt32(double)will. Le résultat de la conversion (dans un contexte non vérifié) est explicitement indéfini si la valeur est en dehors de la plage.
intest toujours de 32 bits, que vous utilisiez une machine 32 ou 64 bits.
                    intVal = System.Convert.ToInt32(System.Math.Floor(dblVal));
                    using System;en haut du fichier, à quel point cela pourrait simplement êtreintVal = Convert.ToInt32(Math.Floor(dblVal));
                    usingdirectives.
                    si vous utilisez cast, c'est-à-dire que (int)SomeDoublevous tronquerez la partie fractionnaire. Autrement dit, si SomeDouble4,9999 était égal à 4,9999, le résultat serait 4 et non 5. La conversion en int n'arrondit pas le nombre. Si vous souhaitez arrondir, utilisezMath.Round
Ouais pourquoi pas?
double someDouble = 12323.2;
int someInt = (int)someDouble;
Utiliser la Convertclasse fonctionne bien aussi.
int someOtherInt = Convert.ToInt32(someDouble);
              Convert.ToInt32 est le meilleur moyen de convertir
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
              Mes manières sont:
 - Convert.ToInt32(double_value)
 - (int)double_value
 - Int32.Parse(double_value.ToString());
              double_value = 0.1
                    label8.Text = "" + years.ToString("00") + " years";
lorsque vous voulez l'envoyer à une étiquette, ou quelque chose, et que vous ne voulez pas de composant fractionnaire, c'est la meilleure façon
label8.Text = "" + years.ToString("00.00") + " years";
si tu veux avec seulement 2, et c'est toujours comme ça