Я пытаюсь определить, является ли целое число n
степенью три. Мой подход состоит в том, чтобы взять из базы 3 log n и проверить, есть ли что-нибудь после десятичной точки результата:
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
возвращается, как ожидалось,Что тут происходит? Я ожидаю, что True
будет возвращено, когда n нас 243.