繁体   English   中英

C#模数方程返回错误值

[英]C# modulus equation return wrong value

var newPosition = (position - key) % alphabet.Length;

当position为66时,键为7964,并且Alphabet.length = 91时,newPosition以某种方式为-72,即使应该为19。为什么?

请注意,%实际上不是模数,而是余数

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

...

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

输出继电器

19

完整演示在这里

使用/用于模块

var newPosition = (position - key) / alphabet.Length;
((position - key) % alphabet.Length + alphabet.Length) % alphabet.Length

绝招

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM