我正在尝试确定给定整数n
是否为3的幂。我的方法是取n的以3为底的对数,并检查结果小数点后是否还有其他内容:
int n = 243;
double result = Math.Log(n, 3);
Console.WriteLine(result);
if (result % 1 == 0)
{
return true;
}
return false;
这是我运行上述代码时程序的输出:
5
False
我尝试了另一种方式:
double result = Math.Log(n, 3);
Console.WriteLine(result);
Console.WriteLine((int)result);
double remainder = result - (int)result;
Console.WriteLine(remainder);
if (remainder == 0)
{
return true;
}
return false;
n = 243,我得到:
5
4
0.999999999999999
False
请注意,使用n=27
会按预期返回True
。这里发生了什么?我期望{n} 243时返回True
。