type conversion - type - Cómo convertir un flotador a un Int redondeando al entero entero más cercano
tipos de conversión (4)
¿Hay alguna forma de convertir un float
en un Int
redondeando al entero entero posible más cercano?
Para redondear al uso más cercano roundf (), para redondear use ceilf (), para redondear use floorf (). Espero que este ejemplo demuestre ...
#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
La documentación...
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
En realidad, la respuesta de Paul Beckingham no es del todo correcta. Si prueba un número negativo como -1.51, obtiene -1 en lugar de -2.
Las funciones round (), roundf (), lround () y lroundf () de math.h también funcionan para números negativos.
Qué tal esto:
float f = 1.51; int i = (int) (f + 0.5);
(int)floor(f+0.5);
Prueba esto...