Вещественные типы данных
Lazarus IDE: Основы программирования в Windows
Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее... |
Не всегда при каких-либо вычислениях удаётся обойтись только целыми числами. Например, если вы пишите бухгалтерскую программу, то вам придётся считать не только рубли, но и копейки. То есть сумма будет иметь вид ррр,кк, где ррр - это рубли, а кк - копейки, то есть дробная часть числа.
В русском языке целую и дробную часть числа принято разделять запятой. Однако в большинстве стран этим разделителем является точка. Поэтому и в большинстве языков программирования целая и дробная части также разделяются точкой:
3.14
1.5
1000.55
Есть и другие способы записи вещественных чисел. Но они сложны для начинающих, поэтому пока рассматривать их не будем.
Вещественные типы данных Free Pascal перечислены в таблице 13.3.
Тип | Размер, байт | Значащие цифры | Диапазон значений |
Real | 4 или 8 | ??? | Определяется операционной системой |
Single | 4 | 7-8 | -1.5 * 1045 … 3.4 * 1038 |
Double | 8 | 15-16 | -5.0 * 10324 … 1.7 * 10308 |
Extended | 10 | 19-20 | -1.9 * 104932 … 1.1 * 104932 |
Comp | 8 | 19-20 | (-2 * 1064 + 1)… (2 * 1063 - 1) |
Currency | 8 | 19-20 | -922337203685477.5808… 922337203685477.5807 |
Вообще вещественные числа в программировании - это сложная тема. Особенно если докопаться до низкого уровня, то есть до того, как вещественные числа представлены в памяти компьютера. Начинающим знать это пока рано. Поэтому сейчас просто считайте, что вещественные числа - это дробные числа.
Старайтесь не использовать в своих программах вещественные типы данных, если в этом нет необходимости. Потому что здесь довольно много подводных камней, на которые может напороться начинающий программист.
Если мы попробуем вывести диапазон значений вещественного типа, как мы это делали с порядковыми типами, например, так
Writeln('Real : ', Low(Real), '..', High(real));
то ничего у нас не получится - компилятор выдаст ошибку. Это опять же связано со сложностью работы с вещественными числами. Вдаваться в подробности не буду. Пока нам это не надо.
program ve; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; var xr : real; xs : single; xd : double; xe : extended; xc : comp; xm : currency; begin Writeln('Real : ', xr); Writeln('Single : ', xs); Writeln('Double : ', xd); Writeln('Extended : ', xe); Writeln('Comp : ', xc); Writeln('Currency : ', xm); Readln; end.
Создайте программу, которая приведена в листинге 13.6. Откомпилируйте программу и запустите её. Попробуйте догадаться, почему программа выводит строки с разным содержимым.