Урок 3.1.2. Вещественные константы
3.1.2. Вещественные константы
Вещественные константы представляют собой десятичные дробные
числа и могут быть записаны в двух формах:
- форма с точкой;
- форма с порядком.
Вещественная константа в форме с точкой записывается как десятичная дробь со знаком или без, в которой целая и дробная части отделяются десятичной точкой. Точка в записи константы обязательна, а цифры, образующие одну из ее частей (целую или дробную), могут отсутствовать:
<целая_ часть>.<дробная часть>
Если знак константы опущен, то она положительна. Примеры записи вещественных констант в форме с точкой:
- 560.23 + 384. 62.4 0.8 .01
Обратим внимание на то, что целое десятичное число может быть записано в виде вещественной константы, например, 5.0 . Вещественная константа в форме с порядком удобна для записи очень больших или очень малых чисел. Известно, что любое число можно записать в виде произведения на основание системы счисления в n-ой степени, например:
В Си, как впрочем и в большинстве других языков программирования, для таких записей используются вещественные константы в форме с порядком, имеющие вид:
< мантисса>Е <порядок> или <мантисса>е<порядок>
В этих обозначениях в качестве мантисса может быть записана либо десятичная константа без модификатора, либо вещественная константа в форме с точкой. В качестве порядок записывается целая десятичная константа, возможно со знаком, определяющая степень числа 10. Если знак порядка опущен, то подразумевается знак + . Примеры записи вещественных констант в форме с порядком: Запись в форме Десятичное с порядком значение
0.653412Е3 653,412
- 3.73Е -1 -0,373
+ 64.2е +02 6420,0
- 87Е2 -8700,0
.123е3 123
4037е -5 0,04037
Вещественные константы в форме с точкой и вещественные константы в форме с порядком имеют машинное представление характерное для нормализованных чисел с плавающей точкой и имеют тип double (двойная точность), занимая в памяти 8 байт для диапазона значений приблизительно от 1.7е-308 до 1.7е+308. Однако, если вещественная константа лежит в диапазоне от 3.4е-4931 до 1.1е+4931, то компилятор выделяет для ее машинного представления 10 байт памяти и она имеет тип long double (длинная двойная точность).
Программист имеет возможность явно указать компилятору сколько байт выделить для представления вещественной константы: Если к константе приписан модификатор L или l, то выделяется 10 байт независимо от значения вещественной константы. Например, 5.25L и 8.074e+32L Если к константе приписан модификатор F или f, то она имеет тип float (плавающий) и ей выделяется 4 байта, но при этом допустимый диапазон константы от 3.4е-38 до 3.4е+38. Например, 5.3F и 1.7e-6f
Компилятор Си к вещественным константам относится не "очень строго". Например, целую часть вещественной константы в форме с точкой можно записать восьмеричными или шестнадцатеричными цифрами. Компилятор не фиксирует ошибку, однако истинное машинное значение константы в этом случае не предсказуемо. Аналогично для константы в форме с точкой мантиссу и порядок можно задать восьмеричными целыми константами, но порядок компилятором воспринимается как десятичный. Поэтому советуем пользоваться только десятичными вещественными константами.
Таблица 4.2 характеризует вещественные константы.
Тип | Диапазон значений | Память (байты) | Число значащих цифр |
float | 3.4е-38 до 3.4е+38 | 4 | 5 - 6 |
double | 1.7е-308 до 1.7е+308 | 8 | 15 |
long double | 3.4е-4931 до 1.1е+4931 | 10 | 19 |
Оставить комментарий