Проблемы с вычислениями в C#
Почему в С# -71%26 = -19? При том что в других языках как например Python, -71%26 = 7
Ответы (1 шт):
Автор решения: Max S
→ Ссылка
Такова реализация. Вообще, всего существует по меньшей мере 5 способов нахождения модуля от числа.
В C# используется усеченное деление для нахождения остатка.
Об этом явно указано и в документации к языку:
Знак ненулевого остатка такой же, как и у левого операнда
Если вам нужно, чтобы вычислялось с условием 0 <= r < n, где r - остаток, n - делитель, можно написать:
//вариант 1:
var r = (b + a % b) % b;
//вариант 2:
var r = a % b;
if (r < 0)
r = r + b; // или же краткой записью: r += b