Estou fazendo um programa que calcula perimetro de uma reta foramado por dois pontos no plano cartesiano.
A formula para isso é Raiz((x2-x1)² + (y2-y1)²) .... oque estou fazendo errado ???
Por exemplo Raiz((4-1)² + (5-1)²) o resultado seria 5, mas ele imprime o resultado como 4,899.
Cara não sei se é isso realmente. Mas tente usar BigDecimal para operações com números decimais, não float.
A forma de usar, por exemplo é:
BigDecimal numero1 = new BigDecimal("10.8");
BigDecimal numero2 = new BigDecimal("10.5");
BigDecimal resultado = numero1.multiply(numero2);
Meio verboso, mas funciona.
K
kauemartins
fredericomaia10:
Cara não sei se é isso realmente. Mas tente usar BigDecimal para operações com números decimais, não float.
A forma de usar, por exemplo é:
BigDecimal numero1 = new BigDecimal("10.8");
BigDecimal numero2 = new BigDecimal("10.5");
BigDecimal resultado = numero1.multiply(numero2);
Meio verboso, mas funciona.
Não entendi como isso aplicaria no meu programa e como isso poderia me ajudar.
Tem como fazer essa modificação no código que postei lá em cima ???
ingridmarcal
Eu acho que o problema está acontecendo porque a ordem dos parâmetros passados para a função pow está invertido. O primeiro parâmetro é a base e o segundo parâmetro é o expoente.
(Utilizando seu exemplo a expressão ficaria: (2^(4-1)) + (2^(5-1)) = 4.899)
Espero ter ajudado em algo…
K
kauemartins
ingridmarcal:
Eu acho que o problema está acontecendo porque a ordem dos parâmetros passados para a função pow está invertido. O primeiro parâmetro é a base e o segundo parâmetro é o expoente.
Deveria ser:
float result = (float) (Math.sqrt((Math.pow((valorP2X-valorP1X),2 )) + (Math.pow((valorP2Y-valorP1Y),2))));
(Utilizando seu exemplo a expressão ficaria: ((4-1)² + (5-1)²) = 5)
e não:
float result = (float) (2,Math.sqrt((Math.pow((valorP2X-valorP1X))) + (2, Math.pow((valorP2Y-valorP1Y)))));
(Utilizando seu exemplo a expressão ficaria: (2^(4-1)) + (2^(5-1)) = 4.899)