2009-05-25 7 views

Répondre

103

Si vous souhaitez arrondir au plus proche int:

int rounded = (int)Math.Round(precise, 0); 

Vous pouvez également utiliser:

int rounded = Convert.ToInt32(precise); 

Qui utilisera Math.Round(x, 0); pour arrondir et lancer pour vous. Il semble plus propre mais est légèrement moins clair IMO.


Si vous voulez arrondir jusqu'à:

int roundedUp = (int)Math.Ceiling(precise); 
+9

Il y a une ambiguïté dans la question. Le titre suggère qu'il veut arrondir, alors qu'il déclare qu'il veut le plus proche int. Ce sont deux choses différentes. – mmcdole

+0

Il voulait arrondir. Ce ne serait pas (int) Math.Ceiling (précis)? – configurator

+0

@configurator, oui, c'est ce que je pense. – mmcdole

9

Du haut de ma tête:

float fl = 0.678; 
int rounded_f = (int)(fl+0.5f); 
+0

Vous voulez expliquer ce dernier f (0.5f)? –

+4

Comme un float lancé à un int sera arrondi à la baisse, le +0.5 garantit que les lancers sont arrondis à l'int proche. Cependant, cela ne fonctionne que pour les flotteurs positifs. –

1

Dois-je utiliser un de ces puis jeter un Int?

Oui. Il n'y a aucun problème à le faire. Les nombres décimaux et doubles peuvent représenter exactement des entiers, il n'y aura donc pas d'erreur de représentation. (Vous n'obtiendrez pas un cas, par exemple, où Round renvoie 4.999 ... au lieu de 5.)

2

Le plus simple est de simplement ajouter 0.5f à cela, puis de lancer ceci à un int.

0

Vous pouvez effectuer un cast dans un int à condition que vous soyez sûr qu'il est dans la plage d'un int (Int32.MinValue à Int32.MaxValue).

Questions connexes