Nós, humanos, estamos acostumados a usar "base dez" para representar números.
Isso define algumas constantes específicas como "irracionais" (consulte link ), por exemplo: 1/3, 1/7, raiz quadrada dois, PI são alguns deles.
Agora, se você escolher usar a base dois (como fazem os computadores), os números irracionais mudam; por exemplo. 1/10 é um, consistindo de "0.000110011" na "calculadora" que tenho no Ubuntu; quando mudado para "programação e modo binário (base dois). Os 1's à direita do ponto decimal agora representam 1/16 + 1/32 + 1/256 + 1/512 que é igual a" 0.099609375 "em decimal - o que é bastante perto de 1/10, mas não exatamente.
O mesmo vale para um conjunto de valores. Qual? Eu não posso dizer, mas tenho certeza que há vários deles.
Agora, além disso, adicione os efeitos de uma representação de ponto flutuante de precisão limitada. usando apenas 32 bits (ref: Descrição do formato aqui , compare com " 8 + E2 "para o decimal).
1/10 (decimal) = 0.0 0011 0011 0011 0011 ... (binário)
Para o que vale a pena: 800 representado como binário não deve aparecer com decimais estranhos; como 8 = 2 ^ 3 e 2 é 2 ^ 0, ambos simples base dois números, armazenados como tal em representação de ponto flutuante internamente em computadores.