A menudo necesito plantar o celar un CGFloat
a un int
, para el cálculo de un índice de matriz.Cómo colocar o cementar con seguridad un CGFloat a int?
El problema que veo permanentemente con floorf(theCGFloat)
o ceilf(theCGFloat)
es que puede haber problemas con las imprecisiones de coma flotante.
Entonces, ¿qué ocurre si mi CGFloat
es pero internamente se representa como 1.999999999999f
o algo así. Hago floorf
y obtengo 1.0f
, que es un flotador nuevamente. Y, sin embargo, debo lanzar esta bestia a int, que puede presentar otro problema.
¿Hay una mejor práctica cómo suelo o CEIL un float
a un int
tal que algo así como 2.0
nunca accidentalmente caen con piso de 1
y algo así como 2.0
nunca accidentalmente caen artesonadas a 2
?
Esta pregunta no se puede responder correctamente hasta que se proporcionen especificaciones que describe el error en el valor de entrada y cuáles son las consecuencias de los valores que son demasiado volver alto o muy bajo Hay compensaciones entre la devolución de un valor que es demasiado alto porque el error de redondeo anterior hizo que el valor sea demasiado alto y devuelva un valor demasiado bajo porque el valor se ajustó artificialmente para compensar el error anterior, y viceversa. Sin una explicación del contexto, no hay una única respuesta correcta. –