Por que os números decimais não podem ser representados exatamente em binário?
Houve várias perguntas postadas no SO sobre a representação de ponto flutuante. Por exemplo, o número decimal 0,1 não tem uma representação binária exata, portanto, é perigoso usar o operador == para compará-lo a outro número de ponto flutuante. Eu entendo os princípios por trás da representação de ponto flutuante.
O que não entendo é por que, do ponto de vista matemático, os números à direita do ponto decimal são mais "especiais" que os da esquerda?
Por exemplo, o número 61.0 tem uma representação binária exata porque a parte integral de qualquer número é sempre exata. Mas o número 6,10 não é exato. Tudo o que fiz foi mover o decimal e, de repente, passei de Exactopia para Inexactville. Matematicamente, não deveria haver diferença intrínseca entre os dois números - eles são apenas números.
Por outro lado, se eu mover o decimal um lugar na outra direção para produzir o número 610, ainda estou em Exactopia. Eu posso continuar nessa direção (6100, 610000000, 610000000000000) e eles ainda são exatos, exatos, exatos. Mas assim que o decimal cruza algum limite, os números não são mais exatos.
O que está acontecendo?
Edit: para esclarecer, eu quero ficar longe da discussão sobre as representações padrão da indústria, como o IEEE, e ficar com o que eu acredito ser a maneira matematicamente "pura". Na base 10, os valores posicionais são:
... 1000 100 10 1 1/10 1/100 ...
Em binário, eles seriam:
... 8 4 2 1 1/2 1/4 1/8 ...
Também não há limites arbitrários colocados nesses números. As posições aumentam indefinidamente para a esquerda e para a direita.