Уравнение модуля C # возвращает неправильное значение - PullRequest
0 голосов
/ 19 октября 2018
var newPosition = (position - key) % alphabet.Length;

Когда позиция равна 66, клавиша равна 7964 и Alpha.length = 91, newPosition как-то -72, даже если должно быть 19. Почему?

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Использование / для модуля

var newPosition = (position - key) / alphabet.Length;
0 голосов
/ 19 октября 2018
((position - key) % alphabet.Length + alphabet.Length) % alphabet.Length

сделал трюк

0 голосов
/ 19 октября 2018

Имейте в виду, что% на самом деле не является модулем, его остаток

static decimal modulus(decimal a, decimal b)
{
  return a - b * Math.Floor(a / b);
}

...

Console.WriteLine( nfmod(66-7964 , 91));

Ouput

19

Полная демонстрация здесь

...