Pessoal estou com um problema em relação ao uso dos métodos da api para cálculos de potências:
Existem 2 métodos que conheço na API do Java para calcular potências. O método pow(int n) da classe BigDecimal, que recebe um inteiro e o método pow(double b, double e) da classe Math que recebe 2 double, base e expoente, respectivamente. Para o 1º método temos o problema do expoente da fórmula ser um número decimal. E para o método da classe Math temos o inconveniente de ter que transformar um BigDecimal (maior precisão) para um tipo primitivo double (perda de precisão) se quisermos trabalhar com esse expoente decimal.
O que ocorre é que o expoente não é um número inteiro e a base é BigDecimal.
Alguém já passou por uma situação semelhante que possa ajudar?
Grato desde já.
Se esses 2 métodos que estão na Api não estão colaborando, vc pod implementar um para resolver o seu problema…se tiver afim de implementar, usa recursão, fica bem simples…
Se o expoente não for um número inteiro e você estiver usando um BigDecimal, e se a precisão requerida para o resultado da exponenciação (pow) for superior ao dado por um double (15 algarismos decimais significativos), então você precisa criar o seu próprio método de exponenciação.
Normalmente, para calcular x elevado a y, você teria de calcular o logaritmo natural de x, multiplicar esse resultado por y (dando y ln x) , e então calcular e elevado a y ln x.
Você precisaria, então, de achar implementações do logaritmo natural e de e elevado a x para BigDecimal.
Fica simples, mas pouco eficiente e duvido que permita contas com potências grandes, envolvendo BigDecimal.
Mas, infelizmente, também não achei um método que faça de maneira eficiente a potenciação de um BigDecimal em relação a um double. Estou curioso para saber se isso existe tb.