Справочник по Ada 95
J.3 Подтипы с пониженной точностью
digits_constraint может быть использован для определения подтипа с плавающей точкой с новым значением требуемой десятичной точности, как отражено в атрибуте Digits. Аналогично, delta_constraint может быть использован для определения обычного подтипа с фиксированной точкой с новым значением delta, как отражено в атрибуте Delta.
Синтаксис
delta_constraint ::= delta static_выражение [range_constraint]
Правила разрешения имен
выражение в delta_constraint должно быть любого вещественного типа.
Правила допустимости
выражение в delta_constraint должно быть статическим.
Для subtype_indication с delta_constraint, subtype_mark должен обозначать обычный подтип с фиксированной точкой.
Для subtype_indication с digits_constraint, subtype_mark должен обозначать либо подтип с десятичной фиксированной точкой, либо подтип с плавающей точкой (несмотря на правило в 3.5.9, которое разрешает только подтип с десятичной фиксированной точкой).
Статическая семантика
subtype_indication с subtype_mark, обозначающим обычный подтип с фиксированной точкой и delta_constraint, определяет обычный подтип с фиксированной точкой с delta, задаваемым значением выражения в delta_constraint. Если delta_constraint включает range_constraint, то обычный подтип с фиксированной точкой ограничен range_constraint.
subtype_indication с subtype_mark, обозначающим подтип с плавающей точкой и digits_constraint, определяет подтип с плавающей точкой с требуемой десятичной точностью (как отражено в атрибуте Digits), задаваемой значением выражения в digits_constraint. Если digits_constraint включает range_constraint, то подтип с плавающей точкой ограничен range_constraint.
Динамическая семантика
delta_constraint совместим с обычным подтипом с фиксированной точкой, если значение выражения не меньше delta подтипа, и range_constraint, если таковой имеется, совместим с подтипом.
digits_constraint совместим с подтипом с плавающей точкой, если значение выражения не больше требуемой десятичной точности подтипа, и range_constraint, если таковой имеется, совместим с подтипом.
Развёртывание delta_constraint состоит из развёртывания range_constraint, если таковой имеется.