Ошибка Java - Что я делаю не так с этой экспонентой? - PullRequest
1 голос
/ 05 февраля 2011

Хорошо, поэтому у меня есть этот кусок кода:

blah = (26^0)*(1);
System.out.println(blah);

Который выдает результат 26, когда он должен быть равен 1. Что я делаю не так? Что я могу сделать, чтобы это исправить?

Ответы [ 4 ]

15 голосов
/ 05 февраля 2011

Думаю, вы путаете оператора ^. В Java оператор ^ выполняет операцию исключающего или. Чтобы получить власть, вам нужно использовать Math.pow(a,b)

3 голосов
/ 05 февраля 2011

В Java оператор ^ не возведен в степень, а скорее побитовый xor. Все xor 0 само по себе, поэтому 26^0=26, 26*1=26

1 голос
/ 05 февраля 2011

Math.pow(base, exponent) работает.^ означает Бит-XOR .

Итак, вы должны использовать:

blah = Math.pow(26, 0) * 1;
System.out.println(blah);
0 голосов
/ 05 февраля 2011

Как и в предыдущих ответах, вы фактически делаете битовое XOR (что приводит к 26), а затем умножаете на 1. См. Операции побитового и битового сдвига и Сводка операторов для больше информации. Вы должны использовать Math.pow (основание, экспонента), поэтому Math.pow (26,0, 0,0), как описано в Math api

...