Ответ 1
((x % 5) + 5) % 5
, но я уверен, что есть более элегантный способ.
В принципе, мне нужно (-3) % 5
быть "2" вместо "-3". Python производит "2" , но С++ создает "-3". Не знаете, как создать "2" на С++. Спасибо!
((x % 5) + 5) % 5
, но я уверен, что есть более элегантный способ.
Добавьте базу, если входной номер X
отрицательный:
X % Y + (X % Y < 0 ? Y : 0);
Вы можете добавить несколько кратных 5
к отрицательному числу сначала, чтобы преобразовать его в положительное число с тем же значением mod 5.
Вы можете сделать это, взяв абсолютное отрицательное число, добавив все необходимое для округления до следующего кратного 5, а затем добавьте его к своему отрицательному числу, и это должно быть уже число от 0 до 4.
В качестве альтернативы просто выполните что-то вроде:
num = -2;
mod = 5;
if ( num < 0 ) {
result = mod - (abs(num) % mod);
}
и он будет работать (объяснение: математический)