Опрос

Что вас больше интересует?

  • игры для nokia
  • темы на телефон
  • программы на мобильный
  • обзоры мобильных телефонов


 

Какие игры вы предпочитаете?

  • игры для мальчиков
  • игры для девочек
  • драки
  • стрелялки
  • логические игры
  • спортивные


 

счетчики

Спонсор раздела:

Операции с порядковыми типами

Статьи

Отношения порядка определяют для переменных простого типа перечень простейших допустимых операций.

Для всех порядковых типов допустима операция задания (приведения) типа. Ее смысл - в приведении преобразования переменной к определенному типу. Для этого саму переменную заключают в круглые скобки, а перед ними ставят название типа, к которому мы хотим привести переменную:

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, тем самым соблюдая статус кво. Вся эта казуистика позволяет избежать ошибок округления, что очень нравится бухгалтерам.

Добавить комментарий


Защитный код
Обновить