c# - 如何用 % 运算符反转这个公式

标签 c# sequence formula

我有一个具有 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/

相关文章:

javascript - Excel 公式到 JavaScript 的转换

c# - Entity Framework 获取缓慢

swift - 全局函数序列(状态 :next:) and type inference

r - 在 R 中按顺序查找起始索引和终止索引

vba - 更改列中数值的符号

r - 在数据框的上下文中评估操作

c# - 将 yield 与 foreach 一起使用是否可以提高性能?

c# - 如何通过任务使用 Clipboard.GetText?

C# 相当于 python itertools.izip_longest

无边界 R 序列生成