pow (x, y) в Java

#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 «.