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.
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.
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.
Não cheguei a testar seu código, inclusive estou com um problema parecido.
Mas se por acaso ainda não deu certo, tenta:
1)Mexer ali naquele “private” da sua classe, pode ser que tenha alguma variável de fora dela que você esteja precisando;
2)Confirmar se sua classe está “static” no caso de algum método exigir isso;
3)Fazer as contas separadas. Corrigi um erro grosseiro aqui fazendo um downcast de double pra int no lugar certo!
Se alguma dessas dicas ajudar, posso dar mais detalhes do que fiz aqui…
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