Problema BigDecimal + pow

Olá pessoal,

Estou com o seguinte problema, preciso elevar um numero decimal a uma potencia. Estou usando método pow da classe BigDecimal, porem em alguns casos não consigo chegar a precisão desejada.

Por exemplo quando elevo 0.4321 a potencia 20, deveria resultar .00000005148554641…, mas o resultado que esta devolvendo é 5.14855464…

outro problema é quando por exemplo elevo 1.0100 a potencia 12, isso vai me resultar em um numero com varios zeros a direita, preciso formatar este numero e retirar os zeros a direita. Se alguem souber como faço essa formatação, vai ajudar muito.

Obs: a base nunca será maior que 99.999 e a potencia nunca será maior que 20.

Abaixo um esboço do código para ficar mais claro.

import java.math.BigDecimal;

import java.util.Scanner;

class Main
{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int exp;

		try
		{
			while(sc.hasNext())
			{
				BigDecimal saida = new BigDecimal(sc.next());
				exp = sc.nextInt();								

				saida = saida.pow(exp);				

				System.out.println(saida.toString()); 
			}
		}
		catch(Exception ex) {};
	}
}

Leia a documentação, boa parte das perguntas estão lá ( você salva araucárias !).

http://java.sun.com/javase/6/docs/api/java/math/BigDecimal.html#toString()

http://java.sun.com/javase/6/docs/api/java/math/BigDecimal.html#toPlainString()

Até!