unidades type tipos matematicas implicita fisica datos conversión conversiones conversion type-conversion

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/roundf.3.html

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...