Почему некоторые цифры теряют точность при сохранении чисел с плавающей запятой?
Например, десятичное число 9.2
может быть выражено точно как отношение двух десятичных целых чисел (92/10
), оба из которых могут быть точно выражены в двоичном (0b1011100/0b1010
). Однако такое же соотношение, которое хранится как число с плавающей запятой, никогда не равно 9.2
:
32-bit "single precision" float: 9.19999980926513671875
64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875
Как такое простое число может быть "слишком большим" для выражения в 64 бит памяти?