Не все десятичные дроби могут быть представлены в двоичном виде. Например, 0.2 (dec) = 0.001100110011 ... (bin). Поэтому, когда число преобразуется из десятичной строки, оно иногда усекается (или округляется).
При преобразовании из двоичного в десятичное, даже если это всегда возможно, результат иногда длиннее, чем n * log_10 (2), где n - количество двоичных цифр. Например, 0,001 (bin) = 0,125 (dec), но 3 * log_10 (2) = 0,903 ... Поэтому, когда число преобразуется из двоичной в цифровую строку, оно иногда также усекается.
Это причина, по которой вы получаете результат, который немного отличается.
Вот пример. Предположим, ваша мантисса состоит из 6 цифр. Давайте преобразуем число 0.001111 (bin) в десятичное. Точный результат равен 0,234375, но это число округляется до 0,23, потому что вам нужно только 6 * log_10 (2) = 1,8061 цифр для представления любого 6-значного двоичного файла. В этом случае 1.8061 округляется до 2.
Теперь давайте посмотрим, что мы получим, если мы переведем наш 0.23 обратно в двоичный файл. Это 0.0011101011 ...
Это должно быть округлено, и результат может быть 0,001110 или 0,001111 в зависимости от способа округления.