我有一个具有 5 个状态的信号量变量。
我可以使用这个 cicle 来增加状态
X = (X + 1) % 5
For X = {0, 1, 2, 3, 4} generate {1, 2, 3, 4, 0}.
但是如果我尝试从另一个方向去降低状态,不会带来正确的结果。
X = (X - 1) % 5
For X = {0, 1, 2, 3, 4} generate {-1, 0, 1, 2, 3} insted of {4, 0, 1, 2, 3}
例如在 excel 中,如果你尝试 =MOD(-1;5)
你会得到 4。
最佳答案
代替
X = (X - 1) % 5
使用
X = (X + 4) % 5
这是
的缩写形式X = (X - 1 + 5) % 5
或者一般来说
X = (X - 1 + n) % n
这确保了 ()
中的参数始终为正 - 因此除法余数也保持为正。
关于c# - 如何用 % 运算符反转这个公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30859326/