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