Por que os números de ponto flutuante são imprecisos?
Por que alguns números perdem a precisão quando armazenados como números de ponto flutuante?
Por exemplo, o número decimal9.2
pode ser expresso exatamente como uma razão de dois números decimais (92/10
), os quais podem ser expressos exatamente em binário (0b1011100/0b1010
) No entanto, a mesma proporção armazenada como um número de ponto flutuante nunca é exatamente igual a9.2
:
32-bit "single precision" float: 9.19999980926513671875
64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875
Como um número aparentemente simples pode ser "grande demais" para expressar64 bits de memória?