Раздел 6.1 - Тип Float

В нескольких следующих уроках мы более глубоко изучим типы языка Ada. Пока что мы рассмотрели встроенный (ниже автор использует термин "предопределенный" - Прим. ред.) в Ada тип Integer.

Подобно типу Integer, в Ada существует также предопределенный тип Float. Этот тип может применяться для хранения дробных и "больших" чисел. Тип Float используют, когда не важны минимальное или максимальное значения и минимальная точность чисел: компилятор Ada подберет наиболее "естественный" для данной машины вариант. Тип `Float' не подходит в случае, если диапазон или точность имеет значение. Для этого в Ada есть другие средства.

Над типом Float можно производить все обычные арифматические операции (+, -, *, /, **, и т.д.) а также операции сравнения (=, /=, >, >=, <, <=). Оператор ``**'' обозначает ``возведение в степень''.

Ada требует корректности операций над типами. Поэтому в языке отсутствуют предопределенные операции, такие, чтобы можно было смешать типы Integer и Float, при помощи '+', '-', '*', и '/'. Таким образом, если вы используете Integer и Float вместе, то для преобразования целых величин в величины с плавающей точкой применяйте функцию `Float()' непосредственно в выражении. Такие преобразования делают выражение более ясным, а это иногда важно для понимания программы. Кроме того, когда вы инициализируете переменную типа Float константой, то константа должна содержать точку, иначе компилятор будет "жаловаться".

Например:


Verbose Configure

Важно понимать общие ограничения для чисел с плавающей точкой на цифровых ЭВМ. Числа с плавающей точкой обычно хранятся как двоичное приближение, использующее ограниченное число разрядов. Вследствие этого, результаты являются только приближением ожидаемых. Даже числа, которые могут быть точно представлены в деятичной системе счисления, становятся неточными после преобразования во внутренний формат чисел с плавающей точкой. Поэтому, избегайте использования "=" для сравнения двух чисел с плавающей точкой. Это не относится к особенностям Ada - в языках Fortran, C, Pascal и т.п. происходит то же самое. Для получения более детальной информации обратитесь к обзору David Goldberg [1991] посвященному арифметике с плавающей точкой.


Упражнение:

Какое конечное значение В будет напечатано в приведенной выше процедуре Think?

  1. 10.0
  2. 0.0
  3. 7.0

Вы можете также:

PREVIOUS Перейти к предыдущему разделу

NEXT     Перейти к следующему разделу

OUTLINE  Вернуться к содержанию Урока 6

David A. Wheeler (dwheeler@ida.org)

Перевод: Юрий Королев   Общая редакция перевода: Г.Ю. Сисюк

Исходная копия этого документа находится по адресу "http://www.adahome.com/Tutorials/Lovelace/s6s1.htm".

Исходная копия перевода размещена на сайте http://www.ada-ru.org