Comment convertir un float en Int en arrondissant à l'entier entier le plus proche
Est-il un moyen de convertir un float
pour un Int
par arrondi au plus proche nombre entier?
4 réponses
En fait, la réponse de Paul Beckingham n'est pas tout à fait correcte. Si vous essayez un nombre négatif comme -1.51, vous obtenez -1 au lieu de -2.
Les fonctions round(), roundf(), lround(), et lroundf() de mathématiques.H travail pour les nombres négatifs aussi.
Pour arrondir au plus proche, utilisez roundf (), pour arrondir utilisez ceilf (), pour arrondir utilisez floorf (). Espérons que cet exemple démontre...
#import "math.h"
...
float numberToRound;
int result;
numberToRound = 4.51;
result = (int)roundf(numberToRound);
NSLog(@"roundf(%f) = %d", numberToRound, result); // roundf(4.510000) = 5
result = (int)ceilf(numberToRound);
NSLog(@"ceilf(%f) = %d", numberToRound, result); // ceilf(4.510000) = 5
result = (int)floorf(numberToRound);
NSLog(@"floorf(%f) = %d", numberToRound, result); // floorf(4.510000) = 4
numberToRound = 10.49;
result = (int)roundf(numberToRound);
NSLog(@"roundf(%f) = %d", numberToRound, result); // roundf(10.490000) = 10
result = (int)ceilf(numberToRound);
NSLog(@"ceilf(%f) = %d", numberToRound, result); // ceilf(10.490000) = 11
result = (int)floorf(numberToRound);
NSLog(@"floorf(%f) = %d", numberToRound, result); // floorf(10.490000) = 10
numberToRound = -2.49;
result = (int)roundf(numberToRound);
NSLog(@"roundf(%f) = %d", numberToRound, result); // roundf(-2.490000) = -2
result = (int)ceilf(numberToRound);
NSLog(@"ceilf(%f) = %d", numberToRound, result); // ceilf(-2.490000) = -2
result = (int)floorf(numberToRound);
NSLog(@"floorf(%f) = %d", numberToRound, result); // floorf(-2.490000) = -3
numberToRound = -3.51;
result = (int)roundf(numberToRound);
NSLog(@"roundf(%f) = %d", numberToRound, result); // roundf(-3.510000) = -4
result = (int)ceilf(numberToRound);
NSLog(@"ceilf(%f) = %d", numberToRound, result); // ceilf(-3.510000) = -3
result = (int)floorf(numberToRound);
NSLog(@"floorf(%f) = %d", numberToRound, result); // floorf(-3.510000) = -4
Le documentation...
Https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man3/ceil.3.html
Https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man3/floor.3.html
Que diriez-vous de ceci:
float f = 1.51; int i = (int) (f + 0.5);