web-dev-qa-db-fra.com

Arrondi du flotteur Objective-C

Comment pourrais-je arrondir un flottant au nombre entier le plus proche dans Objective-C:

Exemple:

float f = 45.698f;
int rounded = _______;
NSLog(@"the rounded float is %i",rounded);

devrait imprimer "le flotteur arrondi est de 46"

38
CodeGuy

La manière recommandée est dans cette réponse: https://stackoverflow.com/a/4702539/308315


Réponse originale:

jette-le sur un int après avoir ajouté 0,5.

Alors

NSLog (@"the rounded float is %i", (int) (f + 0.5));

Edit: la façon dont vous avez demandé:

int rounded = (f + 0.5);


NSLog (@"the rounded float is %i", rounded);
26
Dave

Utilisez la famille de fonctions standard C round(). roundf() pour float, round() pour double et roundl() pour long double. Vous pouvez ensuite convertir le résultat en type entier de votre choix.

145
Jonathan Grynspan

Le moyen le plus simple d’arrondir un float dans objective-c est lroundf:

float yourFloat = 3.14;
int roundedFloat = lroundf(yourFloat); 
NSLog(@"%d",roundedFloat);
5
capikaw

Pour arrondir float au nombre entier le plus proche, utiliser roundf()

roundf(3.2) // 3
roundf(3.6) // 4

Vous pouvez également utiliser la fonction ceil() pour toujours obtenir la valeur supérieure de float.

ceil(3.2) // 4
ceil(3.6) // 4

Et pour la valeur la plus basse floor()

floorf(3.2) //3
floorf(3.6) //3
5
vp2698

Consultez la page de manuel pour rint()

3
NSResponder

Si vous souhaitez arrondir la valeur float au nombre entier, la méthode simple pour arrondir la valeur float dans l’objectif C est la méthode la plus simple.

int roundedValue = roundf(Your float value);
3
Arvind Kanjariya

faisons essayé et checkout

//Your Number to Round (can be predefined or whatever you need it to be)
float numberToRound = 1.12345;
float min = ([ [[NSString alloc]initWithFormat:@"%.0f",numberToRound] floatValue]);
float max = min + 1;
float maxdif = max - numberToRound;
if (maxdif > .5) {
    numberToRound = min;
}else{
    numberToRound = max;
}
//numberToRound will now equal it's closest whole number (in this case, it's 1)
0
Lil C Big Durkee