Десятичные числа Назад В начало Вперед
<десятичный-тип> = <тип-decimal> | number [ [ N[.L] ] ]
  | numeric [ [ N[.L] ] ]

<тип-decimal> - число с фиксированной точкой. Начиная с Атлантис 5.2.02 в БД создается поле соответствующего типа. В Атлантис оно по прежнему будет видно как double. Общее количество цифр и количество цифр после запятой указывается через запятую в круглых или квадратных скобках:

<тип-decimal> = decimal
  [ ( [ | ( ) <precision> [, <scale> ] ( ] | ) ) ]

<precision> - полная длина мантиссы, т.е. количество цифр, сохраняемое в поле.

Допустимый диапазон значений: 1 <= <precision> <= 38.

Значение по умолчанию: decimal = decimal[38, 0].

<scale> - количество цифр после запятой.

Допустимый диапазон значений: 0 <= <scale> <= <precision>.

Значение по умолчанию: decimal[<precision>] = decimal[<precision>, 0].

До Атлантис 5.2.02 <тип-decimal> является синонимом numeric и number:

<тип-decimal> = decimal [ [ N[.L] ] ]

numeric, number - синонимы, тип числа с плавающей точкой. При N < 9 и L <> 0 соответствует типу single (физическая длина - 4 байта), при N <= 16 и L <> 0 соответствует типу double (физическая длина - 8 байт). Если L = 0 то при N < 6 соответствует типу integer (физическая длина - 2 байта), при N < 11 соответствует типу longInt (физическая длина - 4 байта), а при N <= 16 - double (физическая длина - 8 байт). Значения N > 16 не допускаются. По умолчанию присваивается тип double.

Типы данных decimal, numeric и number доступны при описании полей в конструкциях create table, alter table,а так же в конструкции set type. Тип, заданный в конструкции set type, можно в дальнейшем использовать как в DDL конструкциях, так и в VIPе.

Пример

//************************************************************

set type
(
  ddd = decimal
);

!
!-------------------------------------------------------------
!

create table dictest2
with tableoptions header
(
  d01 : decimal [15, 10],
  d03 : ddd,
  d04 : array [1..15] of ddd
);

//************************************************************

interface TestDec;

//------------------------------------------------------------

function f: ddd;
{
  f := double(15.5);
}

end.

Версия

Начиная с Атлантис 5.2.02 введен новый синтаксис для типа decimal.