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"
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);
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.
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);
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
Consultez la page de manuel pour rint()
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);
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)