Decimal
Введение
Проект s21_decimal представляет собой библиотеку s21_decimal.h, разработанную на языке программирования C. Основная цель библиотеки — предоставить тип данных "decimal", который отличается высокой точностью и предназначен для финансовых расчетов. В отличие от стандартных типов с плавающей точкой, тип "decimal" минимизирует ошибки округления, что критически важно для точных финансовых операций.
Глава II
Информация
Тип Decimal поддерживает числа в диапазоне от -79,228,162,514,264,337,593,543,950,335 до +79,228,162,514,264,337,593,543,950,335. Он представляет собой структуру данных, которая включает знак, 96-разрядное целое число и коэффициент масштабирования. Это позволяет точно выполнять арифметические операции без значительных ошибок округления.
Двоичное Представление
Двоичное представление Decimal реализовано с использованием четырехэлементного массива 32-разрядных знаковых целых чисел (int bits[4]
), который хранит:
bits[0]
,bits[1]
,bits[2]
: младшие, средние и старшие 32 бита 96-разрядного целого числа.bits[3]
: коэффициент масштабирования и знак числа.
Пример:
typedef struct { int bits[4];} s21_decimal;
Арифметические Операторы
Библиотека включает следующие арифметические операторы для работы с Decimal:
- Сложение (
+
) - Вычитание (
-
) - Умножение (
*
) - Деление (
/
)
Операторы Сравнения
Также реализованы операторы сравнения для Decimal:
- Меньше (
<
) - Меньше или равно (
<=
) - Больше (
>
) - Больше или равно (
>=
) - Равно (
==
) - Не равно (
!=
)
Преобразования
Библиотека поддерживает преобразования Decimal из и в целочисленные (int
) и числа с плавающей точкой (float
).
Дополнительные Функции
Для удобства работы с Decimal реализованы дополнительные функции, включая округление, отрицание числа, извлечение целой части числа и другие.
Глава III
Часть 1 - Реализация функций библиотеки s21_decimal.h
Проект разработан в соответствии с требованиями:
- Реализация включает использование структурного программирования и соответствует стандарту C11.
- Покрытие unit-тестами библиотеки обеспечивает проверку функциональности с использованием библиотеки Check.
- Проект включает Makefile для сборки библиотеки, unit-тестов и формирования отчета gcov.