Справочник Ada 2005
3.5.10 Операции типов с фиксированной точкой
Статическая семантика
Для каждого подтипа с фиксированной точкой S определены следующие атрибуты:
S'Small
S'Small обозначает наименьшее значение типа S. Значение этого атрибута имеет тип universal_real. Small может быть задан для непроизводных обычных типов с фиксированной точкой с помощью определения_атрибута_пункта (см. 13.3); выражение такого пункта должно быть статическим.
S'Delta
S'Delta обозначает дельта подтипа с фиксированной точкой S. Значение этого атрибута имеет тип universal_real.
S'Fore
S'Fore возвращает минимальное количество символов, необходимых перед десятичной точкой для десятичной записи любого значения подтипа S, предполагая, что представление не включает экспоненту, но включает односимвольный префикс, который является либо знаком минус, либо пробелом. (Это минимальное количество не включает излишних нулей или подчеркиваний и составляет не менее 2.) Значение этого атрибута имеет тип universal_integer.
S'Aft
S'Aft возвращает количество десятичных цифр, необходимых после десятичной точки для размещения дельта подтипа S, если дельта подтипа S больше 0,1, в этом случае атрибут возвращает значение один. (S'Aft — наименьшее положительное целое число N, для которого (10**N)*S'Delta больше или равно единице.) Значение этого атрибута имеет тип universal_integer.
Для каждого подтипа с десятичной фиксированной точкой S определены следующие дополнительные атрибуты:
S'Digits
S'Digits обозначает цифры подтипа с десятичной фиксированной точкой S, что соответствует количеству десятичных цифр, которые могут быть представлены в объектах подтипа. Значение этого атрибута имеет тип universal_integer. Его значение определяется следующим образом:
- Для первого подтипа или подтипа, определенного индикацией_подтипа с ограничением_цифр, цифры — это значение выражения, приведенного после зарезервированного слова digits;
- Для подтипа, определенного индикацией_подтипа без ограничения_цифр, цифры подтипа совпадают с цифрами подтипа, обозначенного меткой_подтипа в индикации_подтипа.
- Цифры базового подтипа — это наибольшее целое число D, такое что диапазон –(10**D–1)*delta .. +(10**D–1)*delta включен в базовый диапазон типа.
S'Scale
S'Scale обозначает шкалу подтипа S, определенную как значение N, такое что S'Delta = 10.0**(–N). Шкала указывает положение точки относительно наиболее значимых цифр значений подтипа S. Значение этого атрибута имеет тип universal_integer.
S'Round
S'Round обозначает функцию со следующим описанием:
function S'Round(X : universal_real)
return S'Base
return S'Base
Функция возвращает значение, полученное путем округления X (в сторону от 0, если X находится посредине между двумя значениями типа S).
ПРИМЕЧАНИЯ
39 Все подтипы типа с фиксированной точкой будут иметь одинаковое значение для атрибута Delta, в отсутствие ограничений_дельта (см. J.3).
40 S'Scale не всегда совпадает с S'Aft для подтипа с десятичной фиксированной точкой; например, если S'Delta = 1.0, то S'Aft равен 1, а S'Scale — 0.
41 Предопределенные операции типа с фиксированной точкой включают операцию присваивания, квалификацию, проверки на принадлежность и явное преобразование в другие числовые типы и из них. Они также включают реляционные операторы и следующие предопределенные арифметические операторы: бинарные и унарные операторы сложения – и +, операторы умножения и унарный оператор abs.
42 Как и для всех типов, объекты типа с фиксированной точкой имеют атрибуты Size и Address (см. 13.3). Другие атрибуты типов с фиксированной точкой определены в A.5.4.