Характеристики библиотеки

Вещественные числа с фиксированной точкой хранятся в базе данных в специальном внутреннем формате, который обеспечивает:

  1. максимальное количество значащих десятичных цифр – 30 (20 в целой части числа);

  2. максимальную точность (число цифр после десятичной точки) – 10.

Число в этом формате занимает 16 байт. Первый байт числа содержит специальную информацию, которую в терминах языка C/C++ можно представить следующим образом:

typedef enum {
   DECZERO,    /* 0 *//* Значение нулевое */
   DECNEGATIV, /* 1 *//* Значение отрицательное */
   DECPOSITIV, /* 2 *//* Значение положительное */
   DECNEGOVER, /* 3 *//* Переполнение отрицательного */
   DECPOSOVER, /* 4 *//* Переполнение положительного */
   DECERROR    /* 5 *//* Ошибка */
 } DECSTATUS;

Таким образом, первый байт внутреннего представления числа хранит информацию о знаке числа либо об ошибке (в частности, о переполнении).

Все операции с вещественными числами с фиксированной точкой ведутся с количеством значащих цифр 20 до запятой и 10 – после запятой. Явное указание значений этих параметров влияет только на символьное представление числа в операциях преобразования.

При преобразованиях целых чисел существует ограничение: число -2147483648, допустимое в языке программирования Си, в библиотеке недопустимо.

При преобразовании вещественных чисел следует помнить, что преобразование это не точное, а выполняется с точностью вещественного числа.