Solo estaba pasando por algunos problemas de aprendizaje y quería saber si alguien podía ayudar.
Mi objetivo actual en el curso en el que estoy es devolver un valor bool de una función dependiendo de si el segundo uint se divide uniformemente en el primer uint.
Tengo la lógica falsa correcta según el sitio, pero aún falla en la lógica verdadera.
Esta es la función actual que he creado.
function dividesEvenly(uint x, uint y) public pure returns(bool) { if (y % x == 0) { return true; } else if (y % x != 0) { return false; } }Uno de los casos de prueba es (4,2) que ingresé yo mismo principalmente y arroja un falso. Sin embargo, hacer 4 % 2 proporciona 0, lo que debería devolver verdadero, por lo que no estoy completamente seguro de lo que hice mal aquí.
Cualquier ayuda apreciada.
La operación de módulo en su fragmento se invierte - y % x . Entonces, en lugar de 4 % 2 (resultado 0), calcula 2 % 4 (resultado 2).
Solución: invertir la aritmética
// the reminder after dividing 4 by 2 is 0 // 4 % 2 == 0 if (x % y == 0) { return true; }