En C #, comment arrondir un flottant à l'entier le plus proche?
Je vois Math.Ceiling et Math.Round, mais cela renvoie une décimale. Dois-je en utiliser un puis le transtyper en un Int?
Si vous voulez arrondir au le plus proche int:
int rounded = (int)Math.Round(precise, 0);
Vous pouvez aussi utiliser:
int rounded = Convert.ToInt32(precise);
Qui utilisera Math.Round(x, 0);
pour arrondir et lancer pour vous. Il semble plus net mais est un peu moins clair OMI.
Si vous voulez arrondir haut:
int roundedUp = (int)Math.Ceiling(precise);
Du haut de ma tête:
float fl = 0.678;
int rounded_f = (int)(fl+0.5f);
(int) Math.Round (monNombre, 0)
Le plus simple est d'ajouter simplement 0.5f
, puis convertissez-le en entier.
Dois-je en utiliser un puis le transtyper en un Int?
Oui. Cela ne pose aucun problème. Les décimales et les doubles peuvent représenter des entiers exactement, il n'y aura donc pas d'erreur de représentation. (Vous n'obtiendrez pas de cas, par exemple, où Round renvoie 4,999 ... au lieu de 5.)
Vous pouvez effectuer un cast vers un int à condition d'être sûr qu'il se trouve dans la plage d'un int (Int32.MinValue à Int32.MaxValue).