2010-05-19 7 views

Répondre

18

L'une des fonctions mathématiques C suivantes pourrait fonctionner pour vous:

  • à double Ceil (double)
  • double plancher (double)
  • à double nearbyint (double)
  • double rint (double)
  • ronde double (double)
  • long int lrint (double)
  • long int lround (double)
  • longue llrint long int (double)
  • longue llround long int (double)
  • deux trunc (doubles)

pour obtenir plus de documentation, ouvrez une session de terminal et le type (par exemple)

man lround 

Je prends lround comme exemple parce que je pense que c'est celui que vous voulez.

+1

De nombreuses fonctions mathématiques ont aussi des versions flottantes. Ajoutez simplement un f. Par exemple: floorf(). – gerry3

4

Do

f = floor(f + 0.5) 

avant la conversion entière.

+0

quand je fait avec cela si je passe la valeur 315, il a été converti en 32.I ont besoin de le rester même que 315 s'il n'a pas de point décimal. – monish

1

Essayez:

float f = 90.909088; 
NSNumber *myNumber = [NSNumber numberWithDouble:(f+0.5)]; 
NSInteger myInt = [myNumber intValue]; 
+0

lorsque j'en ai fini avec la valeur 315, elle a été convertie en 32. J'ai besoin de la garder 315 si elle n'a pas de point décimal – monish

14

Un tour rapide et fonte travailleront pour les valeurs négatives aussi bien que positifs:

NSInteger intValue = (NSInteger) roundf(f); 
+0

Cette réponse devrait être la mieux notée – Mutawe

Questions connexes