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-разрядных знаковых целых чисел (
), который хранит:
,bits[0]
,bits[1]
: младшие, средние и старшие 32 бита 96-разрядного целого числа.bits[2]
: коэффициент масштабирования и знак числа.bits[3]
Пример:
typedef struct { int bits[4];} s21_decimal;
Арифметические Операторы
Библиотека включает следующие арифметические операторы для работы с Decimal:
- Сложение (
)+ - Вычитание (
)- - Умножение (
)* - Деление (
)/
Операторы Сравнения
Также реализованы операторы сравнения для Decimal:
- Меньше (
)< - Меньше или равно (
)<= - Больше (
)> - Больше или равно (
)>= - Равно (
)== - Не равно (
)!=
Преобразования
Библиотека поддерживает преобразования Decimal из и в целочисленные (
) и числа с плавающей точкой (
).
Дополнительные Функции
Для удобства работы с Decimal реализованы дополнительные функции, включая округление, отрицание числа, извлечение целой части числа и другие.
Глава III
Часть 1 - Реализация функций библиотеки s21_decimal.h
Проект разработан в соответствии с требованиями:
- Реализация включает использование структурного программирования и соответствует стандарту C11.
- Покрытие unit-тестами библиотеки обеспечивает проверку функциональности с использованием библиотеки Check.
- Проект включает Makefile для сборки библиотеки, unit-тестов и формирования отчета gcov.