¿En qué segmento se encuentra un número dado? [duplicar
Esta pregunta ya tiene una respuesta aquí:
Las matemáticas de punto flotante están rota 28 respuestasSupongamos tenern
(entero) segmentos contiguos de longitudl
(punto flotante). Es decir
Segment 0 = [0, l)
Segment 1 = [l, 2*l)
Segment 2 = [2*l, 3*l)
...
Segment (n-1) = [(n-1)*l, n*l)
Dado un númerox
(coma flotante) Quiero determinar la identificación del segmento en el que se encuentra.
Mi primera idea es la siguiente:
int segmentId = (int) floor(x/l);
e todos modos, esto a veces no funciona. Por ejemplo, considere
double l = 1.1;
double x = 5.5;
int segmentId = (int) floor(x/l); //returns 5
double l = 1.1;
double x = 6.6;
int segmentId = (int) floor(x/l); //returns 5!!!
Por supuesto, debido a la aritmética finita, esto no funciona bien. Tal vez se requieren algunas comprobaciones adicionales para tener una implementación robusta, pero realmente no sé cómo continuar.
La pregunta es ¿cómo resolvería el problema "¿En qué segmento se encuentra un número dado?"