2012-01-09 20 views
10

¿Cómo puedo convertir un float en int mientras redondeo al siguiente entero? Por ejemplo, 1,00001 irían a 2 y 1.9999 iría a 2.Convierta float a int en Objective-C

+0

favor Rever aquí http://stackoverflow.com/questions/286756/how-do-i-convert-a-float-to-an-int-in -objective-c – wanmuz

+0

¿Por qué estás usando float y no double? La otra pregunta, ¿alguna vez pensaste en comprar un libro sobre el lenguaje C? ¿Cada vez que escucharon sobre las funciones piso, cielo y tierra? – gnasher729

Respuesta

61
float myFloat = 3.333 

// for nearest integer rounded up (3.333 -> 4): 
int result = (int)ceilf(myFloat); 

// for nearest integer (3.4999 -> 3, 3.5 -> 4): 
int result = (int)roundf(myFloat); 

// for nearest integer rounded down (3.999 -> 3): 
int result = (int)floor(myFloat); 

// For just an integer value (for which you don't care about accuracy) 
int result = (int)myFloat; 
+0

¡Gracias! Funciona para mí. – Raja

11

Uso ceil función:

int intValue = (int)ceil(yourValue); 
1

permite utilizar las siguientes métodos C para obtener los valores de diferentes tipos de datos int.

extern float ceilf(float); 
extern double ceil(double); 
extern long double ceill(long double); 

Estas funciones devuelven float, double y long double respectivamente. Pero el trabajo de estas funciones es obtener el máximo o el mínimo del argumento. Como en http://en.wikipedia.org/wiki/Floor_and_ceiling_functions

Luego puede convertir el valor de retorno al tipo deseado como.

int intVariable = (int)ceilf(floatValueToConvert); 

Espero que sea útil.

0

si tenemos valor flotante como 13.123 para convertirla en números enteros como 13

Código

flotador floatnumber = 13,123; // también se puede utilizar en lugar de CGFloat flotador

NSLog(@"%.f",floatnumber); // use for print in command prompt 
Cuestiones relacionadas