Spec-Zone.ru › Ada 95
Справочник по Ada 95

F.2 Пакет Decimal

Статическая семантика

Библиотечный пакет Decimal имеет следующее объявление:
package Ada.Decimal is
pragma Pure(Decimal);
Max_Scale : constant := implementation-defined;
Min_Scale : constant := implementation-defined;
Min_Delta : constant := 10.0**(-Max_Scale);
Max_Delta : constant := 10.0**(-Min_Scale);
Max_Decimal_Digits : constant := implementation-defined;
generic
type Dividend_Type is delta <> digits <>;
type Divisor_Type is delta <> digits <>;
type Quotient_Type is delta <> digits <>;
type Remainder_Type is delta <> digits <>;
procedure Divide (Dividend : in Dividend_Type;
Divisor : in Divisor_Type;
Quotient : out Quotient_Type;
Remainder : out Remainder_Type);
pragma Convention(Intrinsic, Divide);
end Ada.Decimal;
Max_Scale — наибольшее N, такое что 10.0**(-N) допускается в качестве значения delta для типа десятичного числа. Его тип — universal_integer.
Min_Scale — наименьшее N, такое что 10.0**(-N) допускается в качестве значения delta для типа десятичного числа. Его тип — universal_integer.
Min_Delta — наименьшее допустимое значение для delta в decimal_fixed_point_definition. Его тип — universal_real.
Max_Delta — наибольшее допустимое значение для delta в decimal_fixed_point_definition. Его тип — universal_real.
Max_Decimal_Digits — наибольшее допустимое значение для digits в decimal_fixed_point_definition. Его тип — universal_integer.

Статическая семантика

Эффект выполнения процедуры Divide следующий. Значение Quotient равно Quotient_Type(Dividend/Divisor). Значение Remainder равно Remainder_Type(Intermediate), где Intermediate — разность между Dividend и произведением Divisor и Quotient; это результат вычисляется точно.

Требования к реализации

Decimal.Max_Decimal_Digits должен быть не менее 18.
Decimal.Max_Scale должен быть не менее 18.
Decimal.Min_Scale должен быть не больше 0.
ПРИМЕЧАНИЯ
1 Эффект деления, позволяющий управлять округлением частного вместо усечения, достигается путём применения функции атрибута Quotient_Type'Round или преобразования Quotient_Type к выражению Dividend/Divisor.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API