logo
Лекции по TURBO PASCAL

Точность и диапазон вещественных чисел различных типов

Теперь поговорим о точности и диапазоне чисел вещественного типа. Под точностью понимают число значащих цифр (см. соответствующий столбец в таблице №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 возможных значений.

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