В С++есть два вещественных типа: float и double. Операции
вещественной арифметики выполняет сопроцессор (FPU).
Значение, полученное в сопроцессоре, преобразуется в тип float или doubleи хранится в этом типе.
Вещественное число представляется в виде (в IBM PC):
x=(-1)S * 1.f * 2p
Здесь S – знак(‘+’ - 0/’-’ - 1), 1.f – мантисса числа, p – порядок.
В памяти хранится: машинный порядок P’=P+д; д зависит от формата и кол-ва разрядов под порядок, 1 в целой части мантиссы в форматах float и double не хранится, но подразумевается, в сопроцессоре 1 в целой части мантиссы хранится.
S | ß--- | P’-> | <- | ---- | --f-- | ------ | ------ | ------ | ---à |
K
Под машинный порядок p’ отводится K разрядов: в эти к разрядов входит максимальное число max, д=max/2 , половина значений p’ соответствуют положительному истинному порядку p, половина отрицательному. P’ всегда положительный.
K=8 (float); K=11 (double); K=15(long double);
max=255 max=2047 max=32767
соответственно
д=127(float); д=1023(double); д=16383(long double);