Вещественные числа - это числа с плавающей запятой. Широкое их использование характерно для инженерно-технических задач. Тем не менее процессоры 8086, 8088 и другие, на которых построены ПЭВМ малой производительности, не имеют в своем составе операций над числами с плавающей запятой. Такие операции выполняются программным путем. Это означает, что транслятор включает в программу пользователя подпрограммы арифметических операций над числами с плавающей запятой. Тогда вместо выполнения, например, одной машинной команды сложения производится обращение к подпрограмме и выполняется целая группа машинных команд.
Для повышения производительности компьютера при обработке вещественных чисел к нему добавляют сопроцессор. Это небольшая плата, на которой аппаратно реализованы операции с плавающей запятой. При этом скорость выполнения таких операций увеличивается в несколько раз.
При отсутствии сопроцессора реализуется только один вещественный тип - тип real; при наличии сопроцессора реализуются также типы single, double, extended, comp. Вещественные типы отличаются друг от друга количеством разрядов, отводимых для представления мантиссы и порядка. В частности, переменная типа single имеет длину 4 байта, из них три байта - мантисса и один байт - характеристика; для переменной типа double отводится 8 байт памяти и т.д. В дальнейшем при разработке программ в качестве вещественного типа будет рассматриваться только тип real. Информация о других вещественных типах представлена в разделе «Использование сопроцессора».
Значение числа типа real в десятичном представлении может изменяться в диапазоне от до . Размер мантиссы такого числа обеспечивает получение 11 – 12 значащих десятичных цифр.
Для вещественных типов определены четыре арифметические операции:
+ сложение ;
- вычитание ;
* умножение ;
/ деление .
Результатом операций "+", "-", "*" является вещественное значение, если хотя бы один из операндов имеет вещественный тип. Операция "/" дает вещественное значение и в том случае, когда оба ее операнда относятся к целочисленным типам.
Например, 12 / 5 = 2.4 , в то время как 12 div 5 = 2 .
Стандартные функции abs(x) и sqr(x) дают вещественный результат, если их аргумент x имеет тип real. Вне зависимости от типа аргумента следующие стандартные функции всегда дают вещественный результат: sin(x), cos(x), ln(x), exp(x), arctan(x), sqrt(x) (корень квадратный).
Вещественный результат при вещественном аргументе дают также функции:
Int(x) - целая часть вещественного значения x;
Frac(x) - дробная часть вещественного значения x (Frac(x) = x - Int(x)).
Отсутствующие в Турбо Паскале функции arcsin(x), arccos(x), lg(x) могут быть определены следующим образом:
а)
Запись на Паскале:
If abs(x)=1 then
arcsin:=pi/2
Else
arcsin:=arctan(x/sqrt(1-sqr(x)));
б)
На языке Паскаль:
If x=0 then
arccos:=pi/2
Else
arccos:=arctan(sqrt(1-sqr(x))/x)+pi*byte(x<0);
В выражении byte(x<0) используется аппарат приведения типов, который будет рассмотрен позже. В данном случае
byte(x<0) = 1, если x < 0; byte(x<0) = 0, если x ³ 0.
в) lg(x): ln(x)/ln(10).
Степенная функция для вещественного показателя степени вычисляется следующим образом: