Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по TURBO PASCAL.doc
Скачиваний:
18
Добавлен:
04.11.2018
Размер:
1.13 Mб
Скачать
      1. Точность и диапазон вещественных чисел различных типов

Теперь поговорим о точности и диапазоне чисел вещественного типа. Под точностью понимают число значащих цифр (см. соответствующий столбец в таблице №5). В мантиссе не должно быть цифр больше, чем это возможно для данного типа. В противном случае число будет округлено. Например:

program Single_Demo;

var d : single; { вещественный тип с точностью 7-8 цифр }

begin

d:=9.87654321e5;{попытка записать число с мантиссой из 9 цифр}

writeln (d);

end.

Эта программа печатает на экран:

9.87654312500000E+0005

На первый взгляд кажется, что запомнено достаточно много цифр, но при детальном анализе выясняется, что точно записаны лишь 7 первых цифр. Если вместо типа single использовать тип real, то получим следующий результат:

9.87654321000099E+0005

Как видите, точность первых 11 цифр обеспечена (такую точность и гарантирует тип real), однако та небольшая погрешность, которая возникает в результате «машинного округления» может немного повлиять на точность результата. Для точных вычислений лучше всего, конечно, использовать тип double или extended. Они великолепно проходят этот небольшой тест:

9.87654321000000E+0005

Теперь поговорим о диапазоне возможных значений. В таблице указано, какое максимальное и минимальное положительное значение позволяет записать каждый тип. Другими словами – это допустимый диапазон порядка числа. При попытке сохранить значение больше максимального произойдет ошибка «Floating point overflow» - «переполнение в операции с плавающей точкой». При попытке сохранить значение меньше минимального4, появится так называемый «машинный нуль» – компьютер посчитает это значение равным нулю.

      1. Тип comp

Об этом вещественном типе стоит поговорить особо… Дело в том, что этот тип по своей сути является целым, но с очень большим диапазоном значений. А именно:

от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807,

всего 18 446 744 073 709 551 615 возможных значений.

Посмотрите внимательно на последнее число! Именно столько зёрен пшеницы должен был выдать падишах Индии изобретателю шахмат по легенде. Изобретатель попросил за первую клетку шахматной доски одно зерно пшеницы, за вторую – две, за третью – четыре. И так далее: за каждую следующую – в два раза больше, чем за предыдущую. Падишах только посмеялся над столь мизерной просьбой, сказав: «Житницы мои не оскудеют! Завтра тебе вынесут твой мешок пшеницы». Однако такого количества зёрен не найдётся и на всей матушке-земле. Теперь я надеюсь вам ясно, что этого типа данных вполне хватит для практических целей. Кстати, именно из-за такого гигантского диапазона его и отнесли к вещественным типам.

      1. Вещественные функции

Так как вещественные числа охватывают всё множество действительных чисел, то для них существует значительно больше стандартных функций, нежели для целых чисел. Все они, вместе с обычными математическими операциями, перечислены в таблице.

Таблица 7. Математические операции и функции

Название

Обозначение

Способ записи

Сложение

x + y

x + y

Вычитание

x – y

x – y

Умножение

x ∙ y

x * y

Деление

x / y

x / y

Квадратный корень

 x

sqrt (x)

Квадрат числа

x2

sqr (x)

Модуль числа

| x |

abs (x)

Синус

sin x

sin (x)

Косинус

cos x

cos (x)

Тангенс

tg x

tan (x)

Арктангенс

arctg x

arctan (x)

Степень числа e

ex

exp (x)

Натуральный логарифм

ln x

ln (x)

Целая часть

[x]

int (x)

Дробная часть

{x}

frac (x)

Случайное число от 0 до 1

random

Возведение в степень

xy

Нет5

Примечание 1: тригонометрические функции работают с углами, выраженными в радианах.

Примечание 2: все эти функции работают только с вещественными переменными. Для целых переменных можно использовать только sqr и abs, а также операции +, –, * (об этом говорилось ранее).