Quelle est la meilleure façon de convertir un double
en un int
? Doit-on utiliser un plâtre?
c#
.net
casting
type-conversion
user496949
la source
la source
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.Floor
etc - mais vous aurez toujours besoin d' un plâtre après.N'oubliez pas que la plage de
int
est beaucoup plus petite que celle dedouble
. Un cast dedouble
versint
ne lèvera pas d'exception si la valeur est en dehors de la plage deint
dans 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.la source
int
est 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));
using
directives.si vous utilisez cast, c'est-à-dire que
(int)SomeDouble
vous tronquerez la partie fractionnaire. Autrement dit, siSomeDouble
4,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
la source
Ouais pourquoi pas?
Utiliser la
Convert
classe fonctionne bien aussi.la source
Convert.ToInt32
est le meilleur moyen de convertirla source
Le meilleur moyen est d'utiliser simplement
Convert.ToInt32
. Il est rapide et s'arrondit correctement.Pourquoi compliquer les choses?
la source
Voici un exemple complet
Si vous souhaitez arrondir le nombre à l'entier le plus proche, procédez comme suit:
la source
Je pense que le meilleur moyen est
Convert.ToInt32
.la source
int myInt = (int) Math.Ceiling (myDouble);
la source
Mes manières sont:
la source
double_value = 0.1
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
si tu veux avec seulement 2, et c'est toujours comme ça
la source