Десятичные числа |
<десятичный-тип> = <тип-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 конструкциях, так и в е.
//************************************************************ 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.