Float: внутреннее устройство
Так как физически сложно хранить значения чисел с плавающей точкой, они хранятся в дробной части. Основанием дробной части является число степени 2.
Раньше разные процессоры выдавали разный результат, так как не было общего стандарта. Сейчас в большинстве процессоров используется общий стандарт IEEE754.
S (sign) — так же, как в int, старший бит, отвечающий за знак в числе: либо число положительное, либо отрицательное.
E (exponent) — экспонента, дробная часть.
M (matissa/fraction) — число после запятой.
Эта схема актуальна для типов float32, по формуле можно вычислить числа float32.
Рассмотрим пример с числом 0.15625
Вычисляем экспоненту.
Подставляем в формулу значения и вычисляем.
Так как процесс конвертации float входит в стандарт IEEE754, при конвертации вызывается команда процессора, например, при конвертации int и float используется инструкция процессора, о которой ты можешь прочесть подробнее по указанной ссылке.
Из-за непрозрачного процесса конвертации воспользуемся пакетом unsafe для прямого указания типа по памяти.
Разработчики golang не рекомендуют использовать этот пакет в рабочем коде. Это внутренний пакет для разработки самого языка.