Dúvidas com format()

4 respostas
O

Alguém pode me explicar pq qd eu tento formatar um número double ele perde a precisão…

import java.util.Formatter;

public class Formatando {

/**
 * @param args
 */
public static void main(String[] args) {
			
	double i2 = 123.369845454;
			
	Formatter f = new Formatter();
	Object zulu =f.format("%1$5.2f", i2);
	System.out.println(zulu); //resp: 123,37
}

}

4 Respostas

T

%1$5.2f quer dizer: imprimir o primeiro número (1$) com 5 posições pelo menos, sendo que com apenas 2 casas depois da vírgula ou ponto.
Não é que ele “perde a precisão”: esse é o efeito esperado.

O

É exatamente isso que ele faz…

Mas no caso então não teria um jeito de formatar sem ele “arredondar” o valor???

Pois no caso preciso trabalhar com valores de pagamentos e não posso deixar de tratar isso…

T

Uai, se é para fazer um pagamento, ele usa exatamente o arredondamento recomendado pelos bancos (“Banker’s rounding”).
123,369 é arredondado (na sua visualização!) para 123,37 corretamente.

O

Desculpa a minha ignorância…

Mas se eu for exibir uma cópia de um holerite para um funcionário eu num posso exibir 123.37 eu preciso exibir 123.36…entendeu???

O aplicativo faz todo o cálculo do pagamento e guarda no banco desta forma (123.369845454) por isso!!!

Criado 15 de junho de 2007
Ultima resposta 15 de jun. de 2007
Respostas 4
Participantes 2