web-dev-qa-db-fra.com

Comment arrondir un flottant à l'int entier le plus proche en C #?

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?

54
Axajian

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);
125
Matt Brindley

Du haut de ma tête:

float fl = 0.678;
int rounded_f = (int)(fl+0.5f);
13
Mike Tunnicliffe

(int) Math.Round (monNombre, 0)

3
joshcomley

Le plus simple est d'ajouter simplement 0.5f, puis convertissez-le en entier.

3
JulianR

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.)

1
dan-gph

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).

0
Joe