#java #math
#java #математика
Вопрос:
В чем разница между:
Math.pow ( x,y ); // x^y
Для:
x^y; // x^y
?
Предпочту ли я использовать x^y
с double
типом numbers? Или оболочку я должен использовать всегда с Math.pow()
методом?
Ответ №1:
^
является побитовым исключающим оператором OR (XOR) в Java (и многих других языках). Он не используется для возведения в степень. Для этого вы должны использовать Math.pow
.
Комментарии:
1. Итак, например, если я хочу вычислить radius из (x, y), мне нужно: Math.sqrt(Math.pow(x,2) Math.pow(y, 2)) ; ??? спасибо
2. @Master C: Если вы хотите возвести число в определенную степень, вы хотите использовать
Math.pow
.3. @Master C: Помимо того, что это просто расстояние от начала координат в 2d (нет понятия радиуса точки), я думаю, что в этом частном случае
Math.sqrt(x*x y*y)
это более читабельно.
Ответ №2:
Дополнительно к сказанному, если вам нужны целые степени двойки, то 1 << x
(или 1L << x
) — это более быстрый способ вычисления 2x, чем Math.pow(2,x)
или цикл умножения, и он гарантированно даст вам int
(или long
) результат.
Однако он использует только младшие 5 (или 6) бит x
(т.е. x amp; 31
(или x amp; 63
)), смещаясь между 0 и 31 (или 63) битами.
Ответ №3:
В Java x ^ y
это XOR
операция.
Ответ №4:
x^y
это не « x
в полную силу y
«. Это « x
XOR y
«.