Skip to content

Stepan229/decimal-v2.0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

decimal-v2.0

Пример:

typedef struct 
{
    int bits[4];
} s21_decimal;

Арифметические операторы

Название оператора Оператор Функция
Сложение + int s21_add(s21_decimal value_1, s21_decimal value_2, s21_decimal *result)
Вычитание - int s21_sub(s21_decimal value_1, s21_decimal value_2, s21_decimal *result)
Умножение * int s21_mul(s21_decimal value_1, s21_decimal value_2, s21_decimal *result)
Деление / int s21_div(s21_decimal value_1, s21_decimal value_2, s21_decimal *result)

Функции возвращают код ошибки:

  • 0 - OK
  • 1 - число слишком велико или равно бесконечности
  • 2 - число слишком мало или равно отрицательной бесконечности
  • 3 - деление на 0

Уточнение про числа, не вмещающиеся в мантиссу:

  • При получении чисел, не вмещающихся в мантиссу при арифметических операциях, использовать банковское округление (например, 79,228,162,514,264,337,593,543,950,335 - 0.6 = 79,228,162,514,264,337,593,543,950,334)

Операторы сравнение

Название оператора Оператор Функция
Меньше < int s21_is_less(s21_decimal, s21_decimal)
Меньше или равно <= int s21_is_less_or_equal(s21_decimal, s21_decimal)
Больше > int s21_is_greater(s21_decimal, s21_decimal)
Больше или равно >= int s21_is_greater_or_equal(s21_decimal, s21_decimal)
Равно == int s21_is_equal(s21_decimal, s21_decimal)
Не равно != int s21_is_not_equal(s21_decimal, s21_decimal)

Возвращаемое значение:

  • 0 - FALSE
  • 1 - TRUE

Преобразователи

Преобразователь Функция
Из int int s21_from_int_to_decimal(int src, s21_decimal *dst)
Из float int s21_from_float_to_decimal(float src, s21_decimal *dst)
В int int s21_from_decimal_to_int(s21_decimal src, int *dst)
В float int s21_from_decimal_to_float(s21_decimal src, float *dst)

Возвращаемое значение - код ошибки:

  • 0 - OK
  • 1 - ошибка конвертации

Уточнение про преобразование числа типа float:

  • Если числа слишком малы (0 < |x| < 1e-28), вернуть ошибку и значение, равное 0
  • Если числа слишком велики (|x| > 79,228,162,514,264,337,593,543,950,335) или равны бесконечности, вернуть ошибку
  • При обработке числа с типом float преобразовывать все содержащиеся в нём значимые десятичные цифры. Если таких цифр больше 7, то значение числа округляется к ближайшему, у которого не больше 7 значимых цифр.

Уточнение про преобразование из числа типа decimal в тип int:

  • Если в числе типа decimal есть дробная часть, то её следует отбросить (например, 0.9 преобразуется 0)

Другие функции

Описание Функция
Округляет указанное Decimal число до ближайшего целого числа в сторону отрицательной бесконечности. int s21_floor(s21_decimal value, s21_decimal *result)
Округляет Decimal до ближайшего целого числа. int s21_round(s21_decimal value, s21_decimal *result)
Возвращает целые цифры указанного Decimal числа; любые дробные цифры отбрасываются, включая конечные нули. int s21_truncate(s21_decimal value, s21_decimal *result)
Возвращает результат умножения указанного Decimal на -1. int s21_negate(s21_decimal value, s21_decimal *result)

Возвращаемое значение - код ошибки:

  • 0 - OK
  • 1 - ошибка вычисления

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published