Деление с остатком с положительным остатком - PullRequest
3 голосов
/ 20 ноября 2019

Позвольте a, b быть действительными числами с b != 0. Я хочу выполнить деление с остатком a на b. Результатом должно быть уникальное действительное число r, содержащееся в [0, |b|), такое, что a = bc + r для некоторого (уникального) целого числа c.

std::fmod дает аналогичный результат, но допускает r быть отрицательным. Например, std::fmod(-.1, 1) == -.1, но мне нужна функция, которая выдает 0.9 для этого примера.

1 Ответ

2 голосов
/ 20 ноября 2019

Вы можете создать свой собственный довольно легко:

double pos_fmod(double a, double b) {
    double mod_val = std::fmod(a, b);
    return mod_val >= 0 ? mod_val : b + mod_val;
}

Обратите внимание, что это предполагает b > 0.

...