Характеристики библиотеки
Вещественные числа с фиксированной точкой хранятся в базе данных в специальном внутреннем формате, который обеспечивает:
-
максимальное количество значащих десятичных цифр – 30 (20 в целой части числа);
-
максимальную точность (число цифр после десятичной точки) – 10.
Число в этом формате занимает 16 байт. Первый байт числа содержит специальную информацию, которую в терминах языка C/C++ можно представить следующим образом:
typedef enum {
DECZERO, /* 0 *//* Значение нулевое */
DECNEGATIV, /* 1 *//* Значение отрицательное */
DECPOSITIV, /* 2 *//* Значение положительное */
DECNEGOVER, /* 3 *//* Переполнение отрицательного */
DECPOSOVER, /* 4 *//* Переполнение положительного */
DECERROR /* 5 *//* Ошибка */
} DECSTATUS;
Таким образом, первый байт внутреннего представления числа хранит информацию о знаке числа либо об ошибке (в частности, о переполнении).
Все операции с вещественными числами с фиксированной точкой ведутся с количеством значащих цифр 20 до запятой и 10 – после запятой. Явное указание значений этих параметров влияет только на символьное представление числа в операциях преобразования.
При преобразованиях целых чисел существует ограничение: число -2147483648, допустимое в языке программирования Си, в библиотеке недопустимо.
При преобразовании вещественных чисел следует помнить, что преобразование это не точное, а выполняется с точностью вещественного числа.