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 respostasSuponha 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?"