JavaRush/Java блог/Архив info.javarush/Почему неправильно вычисляется степень?
turboblufer
15 уровень

Почему неправильно вычисляется степень?

Статья из группы Архив info.javarush
участников
Ситуация — следующий код (требуется создать метод, который ищет расстояние между двумя точками) Почему неправильно вычисляется степень? - 1
public class Util
{
    public static double getDistance(int x1, int y1, int x2, int y2)
    {
        return Math.sqrt((x2 - x1)^2 +(y2-y1)^2); \\ключевая строчка кода, остальное можно пропустить
    }
}
программа работает неправильно (не правильно считается, если оставить после круглых скобок возведение в квадрат (символ ^2), но стоит мне заменить (х2-х1)^2 на (х2-х1)*(х2-х1), как все сразу становится на свои места! Почему программа считает именно так? Как именно считается знак степени после скобки? И как поменять код, чтобы сохранился знак степени?
Комментарии (3)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Kalter
Уровень 0
26 июля 2014, 18:17
В степень неправильно возводишь. Используй метод (не знаю есть ли он в java.lang.Math):
public int sqr(int num) {

    return num * num;
}
blacky
Уровень 23
26 июля 2014, 07:34
Большинство математических операций есть в классе Math, вот здесь примеры.
blacky
Уровень 23
26 июля 2014, 08:24
По спеке этот оператор ^ не определен для чисел с плавающей точкой, но определен для булева типа и целых чисел. Он является либо логическим, либо побитовым в зависимости от контекста. Т.е.:
1 ^ 2 = 3

3.12. Operators
38 tokens, formed from ASCII characters, are the operators.
Operator:
=   >   <   !   ~   ?   :   ->
==  >=  <=  !=  &&  ||  ++  --
+   -   *   /   &   |   ^   %   <<   >>   >>>
+=  -=  *=  /=  &=  |=  ^=  %=  <<=  >>=  >>>=

4.2. Primitive Types and Values

4.2.2. Integer Operations

The numerical operators, which result in a value of type int or long:

The integer bitwise operators &, ^, and | (§15.22.1)
4.2.5. The boolean Type and boolean Values
The boolean operators are:

The logical operators &, ^, and | (§15.22.2)
Немного непривычно после C.