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