Доступные версии документации

Библиотека Decimals

Назначение

Библиотека DECIMALS предназначена для работы с вещественными числами с фиксированной точкой (тип данных DECIMAL СУБД ЛИНТЕР). Необходимость введения этого типа данных вызвана тем, что стандартные типы данных языка C/C++ не обеспечивают высокой точности, необходимой, например, для бухгалтерских расчетов.

Набор функций библиотеки обеспечивает выполнение:

  1. арифметических операций;

  2. сравнение чисел между собой;

  3. преобразование из строкового представления во внутренний формат СУБД ЛИНТЕР;

  4. преобразование из внутреннего формата СУБД ЛИНТЕР в строковое представление;

  5. преобразование к другим типам данных.

Условия применения

Библиотека может использоваться только в программах на языке C/C++.

Модуль языка C/C++, в котором предполагается использовать функции библиотеки, должен включать заголовочный файл decimals.h.

В проект приложения должна быть добавлена библиотека decimals.a.

Примечание

Файлы decimals.h и decimals.a входят в состав поставки СУБД ЛИНТЕР.

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

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

  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, допустимое в языке программирования Си, в библиотеке недопустимо.

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

Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter