对 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;
}
刚刚经历了一些学习的痛苦,想知道是否有人可以提供帮助。
我目前正在学习的课程的目标是 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;
}