Em qual segmento um determinado número se encontra? [duplicado

Esta pergunta já tem uma resposta aqui:

A matemática do ponto flutuante está quebrada? 28 respostas

Suponha tern segmentos (inteiros) contíguos de comprimentol (ponto flutuante). Isso é

Segment 0 = [0, l)
Segment 1 = [l, 2*l)
Segment 2 = [2*l, 3*l)
... 
Segment (n-1) = [(n-1)*l, n*l) 

Dou um númerox (ponto flutuante) Quero determinar o ID do segmento em que ele se encontr

A minha primeira ideia é a seguinte:

int segmentId = (int) floor(x/l);

De qualquer forma, isso às vezes não funciona. Por exemplo, 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!!!

Certamente, devido à aritmética finita, isso não funciona bem. Talvez sejam necessárias algumas verificações extras para ter uma implementação robusta, mas eu realmente não sei como prossegui

A questão é como você resolveria o problema "Em qual segmento um determinado número se encontra?"

questionAnswers(5)

yourAnswerToTheQuestion