Среда разработки Unimod PRO 2 (версия 2.3.40)
 Руководство по программированию
×

Вещественный (REAL)


Вещественный тип данных (REAL) используется для хранения в памяти контроллера дробных аналоговых значений в формате числа с плавающей точкой: <целая часть>.<дробная часть>. Наличие символа точки ( . ) в вещественном значении обязательно, он позволяет разделить целую и дробную части, а также отличить вещественное значение от целочисленного.
 
Диапазон поддерживаемых значений.
Вещественные значения в диапазоне от -3.4 * 1038 до 3.4 * 1038.
 
Формы представления вещественных значений.
Вещественные значения с плавающей точкой могут быть представлены в десятичной или экспоненциальной форме.
В десятичной форме указываются все значимые цифры в целой и дробной части, что при большом количестве цифр сильно ухудшает их визуальное восприятие.
//десятичная форма записи вещественных числе
real_var := 0.0000058799;
real_var := 4500012100000.0;
real_var := 10478000.505;
В экспоненциальной форме числа представлены в формате: <мантисса>Е±<экспонента>. Мантисса чаще всего представлена числом с одной цифрой в целой части, а экспонента содержит положительное или отрицательное число, соответствующее количеству цифр смещения плавающей точки. Например, преобразуем число 10478000.505 в экспоненциальную форму:
  • Сместим плавающую точку влево на 7 позиций, чтобы в целой части осталась одна цифра: 10478000.505 = 1.0478000505 * 107.
  • Заменим умножение на 107 экспоненциальной формой записи: 1.0478000505 * 107 = 1.0478000505Е+7, где 1.0478000505 - мантисса, 7 - экспонента.
    //экспоненциальная форма записи числа 0.0000058799
    real_var := 5.8799Е-6;
    //экспоненциальная форма записи числа 4500012100000.0
    real_var := 4.5000121Е+12;
    //экспоненциальная форма записи числа 10478000.505
    real_var := 1.0478000505Е+7;
 
Вещественные константы.
Вещественные константы также должны содержать символ точки ( . ) для отделения целой части от дробной и могут быть представлены в десятичной или экспоненциальной форме. Например:
//вещественные константы в десятичной форме
real_var := 0.000587;
real_var := 450.0;
real_var := 10478.5;
 
//вещественные константы в экспоненциальной форме
real_var := 5.87Е-4;
real_var := 4.5Е+2;
real_var := 1.04785Е+4;
 
//2024 - не является вещественной константой, т.к. отсутствует дробная часть
real_var := 2024;
//правильное написание вещественной константы
real_var := 2024.0;
real_var := 2.024Е+3;
 
Объем выделяемой памяти.
В памяти контроллера каждое вещественное значение занимает 32 бита:
  • биты 0..22 содержат значение мантиссы;
  • биты 23..30 содержат значение экспоненты;
  • старший бит (31) используется для определения знака числа (false - положительное число, true - отрицательное);
    Например, на следующем изображении продемонстрирован формат сохранения в памяти вещественного числа 20.24.
Пример преобразования вещественного значения в двоичный формат.
  • Перевод целой и дробной части в двоичный формат, общее количество разрядов не превышает 24:
  • Приведение к нормализованному виду: 10100.0011110101110000101 = 1.01000011110101110000101*104.
  • Заполнение старшего бита: 0 - при положительном значении, 1 - при отрицательном.
  • Для определения экспоненты к двоичному представлению степени 4 (1002) прибавляется смещение на значение 127 (011111112):
  • Заполнение мантиссы: