ho la funzione successiva:C# isPowerOf funzione
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;
}
ho inserito la funzione di stampa per l'analisi.
Se io chiamo la funzione:
isPowerOf(25, 2)
E tornare vero in quanto 5^2
uguale a 25. Ma, se io chiamo 16807, che è 7^5
, la via successiva:
isPowerOf(16807, 5)
In questo caso, stampa '7' ma a == (int)a
restituisce falso.
Potete essere d'aiuto? Grazie!
Collegamento obbligatorio a [Ciò che ogni scienziato informatico dovrebbe sapere sull'aritmetica a virgola mobile] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) – AakashM
Ognuno suggerirà meglio confronti a virgola mobile, ma IMO la radice del problema è l'algoritmo qui. – harold