Проблемы с вычислениями в 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
→ Ссылка