public static void main(String[] args) {
System.out.println(formatador( 0.9413161751385224));
}
private static String formatador(double valor) {
DecimalFormat formatador = new DecimalFormat("##,##00.00");
String s = formatador.format(valor);
s = s.replace(',', '.');
return s;
}
O resultado foi: 00.94
Talvez não esteja entendendo direito como o problema ocorre. Talvez você explique melhor, ou mostre o código onde você chama o método.
Uma possível motivo é a versão e fornecedor da VM que você está usando.
Andre_Brito
diogo,
As vezes ele retorna um resultado corre, como ocorreu e as vezes um resultado errado.
Por exemplo,
Abraço.
R
rbgalo
Use BigDecimal
tem um metodo para setar a escala .setScale(…);
D
diogosantana
Cara,
posta o código que você está usando para chamar. Passando esse último valor, aqui no meu exemplo saiu 0.025, que aliás é o resulado correto, ao invés de 0.024 como você falou, por causa do arredondamento.
Andre_Brito
diogosantana,
Consegui resolver.
No método formatador, como você pode ver, o parâmetro é ##.##, e como 0.024 são 3 casas, o correto é 0.025.
Aliás, lotei de casts pra double as divisões e agora está funcionando corretamente.
Se alguma dessas dicas ajudar, posso dar mais detalhes do que fiz aqui…
sauron_fight
Implementei um interface converter implementei os dois metados abaixo mais ainda assim
nao consigo ter o resultado esperado, quando escrevo os numeros 10,51 ele grava corretamente mais
se eu digitar 10,50 e gravado “10,5”, como estou querendo fazer algums calculos monetatios daria erro