Math.pow entre métodos.
Boas. Tenho estado a testar a classe Math.pow(x,y) que efectua a x elevado a y. A minha dúvida reside no facto de ter valores completamente alterados quando introduzo por exemplo:
que basicamente é o valor na "casa" 2 da strong elevado a 5. Por algum motivo isto retorna-me valores que não estou à espera :/
Será que não se pode utilizar um método dentro da classe Math?
[/code]
Math.pow(string.charAt(2), 5);
Diogopc
Curtidas 0
Melhor post
Manuel Leiria
09/04/2009
Experimenta converter os valores para double
Math.pow(Double.valueOf(string.charAt(2)).doubleValue(), 5.0);
GOSTEI 1
Mais Respostas
Diogopc
09/04/2009
Continuo exactamente com o mesmo problema :/
Vou postar aqui o código completo do programa para o caso de alguém ter alguma ideia do que poderá estar a causar tal problema
Basicamente o que o programa faz (ou devia fazer :roll: ) é pegar num número introduzido pelo utilizador, introduz esse número numa string e vê o seu tamanho (quantos números tem). O tamanho da número irá ser o expoente ao qual vou elevar cada um dos números que compoem o número inicial (por exemplo para o número 154: 1^3 + 5^3 + 4^3).
Já tentei substituir o s.charAt() por um qualquer outro número e verifiquei que o método Math.pow() funciona na perfeição e também já tentei a solução proposta pelo utilizador manuel.leiria, sem sucesso. Só me resta "culpar" a introdução do s.charAt() dentro de um método :/
import java.util.*;
public class Narc {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
int numero = teclado.nextInt();
String s = Integer.toString(numero);
int tamanho = s.length();
double soma = 0;
for(int i = 0; i < expoente; ++i){
soma = soma + Math.pow(s.charAt(i), tamanho);
}
System.out.println(soma);
}
}GOSTEI 0
Vagner Planello
09/04/2009
Eu acho que o problema esta acontecendo porque o char é um tipo numerico, entao o metodo pow esta fazendo a operacao com o valor numerico do caracter e nao com o valor que ele representa.
Experimenta algo como:
isso faz com que o caracter seja visto como uma String e nao como um char, assim ele não é interpretado como um tipo numerico
String s = "123";
for (int i = 0 ; i < s.length() ; i++) {
Double d = new Double(""+s.charAt(i));
System.out.println(d);
}
GOSTEI 0
Diogopc
09/04/2009
Funciona na perfeição. Obrigado Vagner !
GOSTEI 0