Отношения порядка определяют для переменных простого типа перечень простейших допустимых операций.
Для всех порядковых типов допустима операция задания (приведения) типа. Ее смысл - в приведении преобразования переменной к определенному типу. Для этого саму переменную заключают в круглые скобки, а перед ними ставят название типа, к которому мы хотим привести переменную:
var C: Cardinal; I: Integer;
B: Byte;
begin
B:=Byte(C);
B:=Integer(I);
end;
Поясню, что происходит при задании типа. Допустим, что мы приводим переменную типа Integer к типу данных Byte. Если реальное значение, содержащееся в этой переменной, не выходит за границы, допустимые в типе данных Byte (0...255), то значение изменениям не подвергается. Но если значение превысит 255 или станет меньше 0, то операция задания типа включит ограничения и не допустит выхода значения за пределы диапазона Byte.
B:=Byte(-1); {результат B=255} B:=Byte(511); {результат B=255}
B:=Byte(-2); {результат B=254} B:=Byte(510); {результат B=254}
B:=Byte(-255); {результат B=1} B:=Byte(257); {результат B=1}
B:=Byte(-256); {результат B=0} B:=Byte(256); {результат B=0}
Читатель, имеющий некоторый опыт программирования, наверное, уже выявил закономерность преобразования числа при операции задания типа. Например, для типа Byte действие
B:=Byte(I);
является аналогом операции
B:=I mod 256; //результат = остаток от деления I на 256
Действительные типы
Действительные (вещественные) типы данных предназначены для работы со значениями, содержащими не только целую, но и дробную часть.
Если в программе необходимо производить вычисления действительных чисел, то по возможности объявляйте переменные как Single (если, конечно, вас устраивает диапазон данного типа данных).
При осуществлении математических операций с переменными действительного типа будьте готовы к незначительным ошибкам округления.
var S : Single; R,F : Real; begin
S:=1/3; R:=1/3;
F:=S-R; //результат F = 0.000000009934107
end;
Предложенный листинг демонстрирует ситуацию, когда компьютер «ошибся» в элементарных операциях вычитания. Даже второклассник знает, что 1/3 -1/3 = 0, а наш кремниевый друг насчитал что-то около 0.000000009934107. На самом деле в ошибке виноваты мы, а не «бестолковый» компьютер. Ведь в программе мы использовали различные типы данных. Переменная S объявлена как Single, поэтому она способна точно хранить лишь 7-8 знаков после запятой, а переменная R объявлена как Real, т. е. способна хранить 15-16 знаков после запятой. В результате имеем S = 0.333333343267441, R = 0.333333333333333.
®При проектировании бухгалтерских приложений для обработки денежных величин применяйте переменные типа Currency. Значение, переданное в переменную этого типа данных, физически хранится в формате Int64, при этом Delphi полагает, что четыре последних знака этого значения - знаки после запятой. Таким образом, действительное число 9,9999 обрабатывается как целое 99999, но при выводе на экран и проведении математических операций в тайне от нас Delphi делит его на 10000, тем самым соблюдая статус кво. Вся эта казуистика позволяет избежать ошибок округления, что очень нравится бухгалтерам.