Насколько я знаю, значения с плавающей запятой имеют вид n * 2 ^ e, с
- диапазон с плавающей запятой, равный n = - (2 ^ 23-1) - (2 ^ 23-1) и e = -126 - 127,
- двойной диапазон: n = - (2 ^ 52-1) - (2 ^ 52-1) и e = -1022 - 1023
Я просматривал стандарт C ++, но не смог найти место, где стандарт указывает это, или не предписал связать типы float, double и long double с диапазонами, определенными в других (IEEE) стандартах. Единственное, что я нашел в 3.9.1.8, это:
Существует три типа с плавающей точкой: float, double и long double. Тип double обеспечивает, по крайней мере, такую же точность, как и float, а тип long double обеспечивает, по крайней мере, такую же точность, что и double. Набор значений типа float является подмножеством набора значений типа double; набор значений типа double является подмножеством набора значений типа long double. Представление значений типов с плавающей запятой определяется реализацией.
И нет упоминания о минимальном диапазоне, предоставляемом типом.
Где / как стандарт определяет (минимальный?) Диапазон значений для типов с плавающей запятой? Или компилятор может свободно выбирать любой диапазон значений и при этом соответствовать стандарту?