我有一個功能:C#isPowerOf功能
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;
}
我插入用於分析的打印功能。
如果我調用該函數:
isPowerOf(25, 2)
它,因爲5^2
等於25 返回true但是,如果我叫16807,這是7^5
,接下來的路:
isPowerOf(16807, 5)
在這情況下,它打印'7',但a == (int)a
返回false。
你能幫忙嗎?謝謝!
強制鏈接到[每個計算機科學家應該知道的浮點算術](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) – AakashM 2012-07-06 09:47:12
每個人都會建議更好浮點比較,但IMO問題的根源在於這裏的算法。 – harold 2012-07-06 09:48:36