Самый распространенный 32-битный формат с плавающей запятой, IEEE-754 binary32 , не имеет восьми битов для базы. База фиксируется на двух. Он имеет один бит для знака, восемь бит для поля экспоненты и 23 бита для поля значимости и части (дробная часть).
Бит знака определяет, является ли число положительным (0) или отрицательным (1 ).
Поле экспоненты e имеет несколько применений. Если это 11111111 (в двоичном виде), а поле значений и f равно нулю, значение с плавающей запятой представляет бесконечность. Если е равно 11111111, а поле значимое и ноль не равно нулю, оно представляет собой специальное «значение» Не-числа.
Если показатель степени не равен 11111111 и не равен нулю, значение с плавающей запятой представляет 2 e − 127 • (1 + f / 2 23 ), с добавленным знаком. Обратите внимание, что часть дроби формируется добавлением 1 к содержимому поля значимости. Это часто называют неявным 1, поэтому математическое значение и составляет 24 бита - 1 из первого значения 1, 23 из поля значения и значения.
Если показатель степени равен нулю, значение с плавающей запятой представляет 2 1 −127 • (0 + f / 2 23 ) с добавлением знака. Обратите внимание, что ведущий бит равен 0. Они называются субнормальными числами. Они включены в формат, чтобы заставить некоторые математические свойства работать в арифметике с плавающей точкой c.
. Таким образом, наибольшее конечное значение представляется, когда показатель равен 11111110 (254), а дробь равна единице (2 23 -1), поэтому представленное число равно 2 254−127 • (1+ (2 23 −1) / 2 23 ) = 2 127 • (1-2 −23 ) = 2 127 -2 104 = 340282346638528859811704183484516925440.
В float a=123456789.1;
типу float
не хватает точности для представления 123456789.1. (На самом деле, десятичная дробь .1 никогда не может быть представлена в двоичном формате с плавающей запятой.) Когда у нас есть только 24 бита для значимого, самые близкие к 123456789.1 числа, которые мы можем представить, это 123456792 и 123456800.