que tiene la siguiente función:C# isPowerOf función
static bool isPowerOf(int num, int power)
{
double b = 1.0/power;
double a = Math.Pow(num, b);
Console.WriteLine(a);
return a == (int)a;
}
me inserta la función de impresión para su análisis.
Si llamo a la función:
isPowerOf(25, 2)
devolverlo cierto ya 5^2
es igual a 25. Pero, si llamo 16807, que es 7^5
, la siguiente manera:
isPowerOf(16807, 5)
En este caso, imprime '7' pero a == (int)a
devuelve falso.
¿Puede ayudarnos? ¡Gracias!
Enlace obligatorio a [Lo que todo científico informático debe saber sobre la aritmética de coma flotante] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) – AakashM
Todo el mundo va a sugerir mejor comparaciones de punto flotante, pero IMO la raíz del problema es el algoritmo aquí. – harold