对 Solidity 中的模数结果感到困惑

Confused by result of modulo in Solidity

刚刚经历了一些学习的痛苦,想知道是否有人可以提供帮助。

我目前正在学习的课程的目标是 return 来自函数的 bool 值,这取决于第二个单位是否平均分配给第一个单位。

根据站点,我有正确的错误逻辑,但在正确的逻辑上仍然失败。

这是我创建的当前函数

function dividesEvenly(uint x, uint y) public pure returns(bool) {
    if (y % x == 0) {
        return true;
    } else if (y % x != 0) {
        return false;
    }
 }

其中一个测试用例是(4,2),主要是我自己输入的,确实查出了一个false。然而,做 4 % 2 提供 0 应该 return true 所以我不完全确定我在这里做错了什么。

感谢任何帮助。

您的代码段中的模运算是相反的 - y % x。因此,它计算的不是 4 % 2(结果 0),而是 2 % 4(结果 2)。

解法:逆向运算

// the reminder after dividing 4 by 2 is 0
// 4 % 2 == 0

if (x % y == 0) {
    return true;
}