Программисты JAVA общаются здесь
-
Anonymous
LeetCode 231: проблема с определением того, является ли данное число степенью 2.
Сообщение
Anonymous »
Я хочу определить, является ли данное число степенью двойки математическим способом, а а не с помощью поразрядного подхода. Вот мой код:
Код: Выделить всё
private static double logBaseTwo(final double x) {
return Math.log(x) / Math.log(2);
}
private static double roundToNearestHundredThousandth(final double x) {
return Math.round(x * 100000.0) / 100000.0;
}
private static boolean isInteger(final double x) {
return (int)(Math.ceil(x)) == (int)(Math.floor(x));
}
public static boolean isPowerOfTwo(final int n) {
return isInteger(roundToNearestHundredThousandth(logBaseTwo(n)));
}
Он неправильно возвращает true для определенных чисел, например 524287. Почему это?
Подробнее здесь:
https://stackoverflow.com/questions/622 ... power-of-2
1731965634
Anonymous
Я хочу определить, является ли данное число степенью двойки математическим способом, а а не с помощью поразрядного подхода. Вот мой код:
[code]private static double logBaseTwo(final double x) {
return Math.log(x) / Math.log(2);
}
private static double roundToNearestHundredThousandth(final double x) {
return Math.round(x * 100000.0) / 100000.0;
}
private static boolean isInteger(final double x) {
return (int)(Math.ceil(x)) == (int)(Math.floor(x));
}
public static boolean isPowerOfTwo(final int n) {
return isInteger(roundToNearestHundredThousandth(logBaseTwo(n)));
}
[/code]
Он неправильно возвращает true для определенных чисел, например 524287. Почему это?
Подробнее здесь: [url]https://stackoverflow.com/questions/62273697/leetcode-231-problem-in-finding-whether-a-given-number-is-power-of-2[/url]