Tengo un doble que es un intervalo de tiempo en segundos. Los valores válidos son 0.0, 0.5, 1.0, 1.5, etc.¿Cómo convertir de forma segura este doble en un int?
Ahora necesito convertir este valor en un int. Pero no puedo hacer esto:
int converted = (int)theDouble;
Debido a lo que puede suceder es que mi doble debido a los errores de punto flotante es 0,999999999 1,000000000 en lugar de. Simplemente cortaría la cola, y terminaríamos con 0 en lugar de 1. Además, cuando mi doble es 0.9, quiero una int que sea 1. Cuando es 1.1, quiero que int sea 1. Cuando es 1.8, quiero que int sea 2.
Hay una función round() pero Xcode no muestra una documentación para esto. El encabezado solo dice que devuelve un doble. Entonces no es lo que necesito.
¿Cuál es la forma más segura de obtener una representación int cercana de ese doble? Aunque es un doble, nunca necesitaré una precisión mayor que 0.5 o un dígito fragmentario (no soy un genio matemático y no conozco los términos científicos exactos).