Мы, люди, привыкли использовать "базовую десятку" для представления чисел.
Это устанавливает некоторые конкретные константы как "иррациональные" (см. Https://en.wikipedia.org/wiki/Irrational_number), например: 1/3, 1/7, квадратный корень два, PI - некоторые из них.
Теперь, если вы решите использовать базу два вместо (как это делают компьютеры), иррациональные числа изменятся; например, 1/10 - это единица, состоящая из «0,000110011» в "калькуляторе", который есть у меня в Ubuntu; при переключении в режим программирования и двоичного (база два). 1 справа от десятичной запятой теперь представляют 1/16+1/32+1/256+1/512, что соответствует «0.099609375» в десятичном виде - что довольно близко к 1/10, но не совсем.
То же самое верно для набора значений. Который? Я не могу сказать, но я совершенно уверен, что их много.
Теперь в дополнение к этому добавьте эффекты представления с плавающей запятой ограниченной точности, например, используя только 32 бита (см. Описание формата здесь, сравните с «8+E2» для десятичного числа).
1/10 (десятичное число) = 0,0 0011 0011 0011 0011 ... (двоичное)
Для чего это стоит: 800, представленный как двоичный файл, не должен появляться со странными десятичными числами; так как 8 = 2 ^ 3, а 2 равно 2 ^ 0, оба являются простыми базовыми двумя числами, которые хранятся как таковые в представлении с плавающей запятой внутри компьютера.