2011-04-08 35 views

Respuesta

139

Además de las otras respuestas:

float theFloat = 1.23456; 
int rounded = roundf(theFloat); NSLog(@"%d",rounded); 
int roundedUp = ceil(theFloat); NSLog(@"%d",roundedUp); 
int roundedDown = floor(theFloat); NSLog(@"%d",roundedDown); 
// Note: int can be replaced by float 

Para redondear a decimales específicos, véase la cuestión mencionada por Alex Kazaev.

+1

Debería usar 'roundf' en lugar de' lroundf' para convertir a 'int' sin previo aviso. No pude editar tu publicación debido al límite mínimo de cambio de personaje para editar. – ersentekin

18

La función lroundf() lo hará:

float a=20.49; 
int myInt = lroundf(a); 
+1

¿y si el valor de a es más de 20.5? – ios

+3

no. lroundf (a) te da como si el valor es 20.75 luego se convierte en 21 y si el valor es 20.45 entonces se convierte en 20 ... significa más de 20.5 entonces se convertirá en 21 más 20. :) –

1

Convertir a int y luego convertir de nuevo a flote.

CGFloat *myFloat = 100.765; 
NSInteger *myInteger = myFloat; 
CGFloat *newFloat = myInteger; 

Esto funcionará

+0

Eso es truncamiento (piso/ceil) no redondeando – xaphod

Cuestiones relacionadas