Duas casas decimais somente ...como?

Olá,

como consigo formatar o campo abaixo

nn=9.539

somente em duas casas decimais

nn=9.53

alguém poderia me ajudar …

abs


		double vicms= 1.20;
		double vbc = 12.58;
		double resultado =0;
		int total=0;
		resultado = ((vicms/vbc)*100);
		System.out.println("resultado  = "+resultado);
		Locale meuLocal = new Locale( "us");
		NumberFormat nn = NumberFormat.getInstance( meuLocal );  
                nn.setMinimumFractionDigits( 1);
		
		System.out.println("nn="+nn.format(resultado));

use
DecimalFormat f = new DecimalFormat("#.##");

pra aplicar

f.format(resultado)

valeu pelo retorno …

mas o retorno foi
nn=9,54

e queria que fosse 9.54 tem jeito ???

humm… nao sei se existe um metodo q faça isso exatamente…

mas daria pra vc transformar o resultado em String…
procurar por “,” nela… e mudar para “.” …
e então imprimir

use o metodo
replace(char oldChar, char newChar)

Putz cara se eu me lembro tem uma classe chamada DecimalFormatSymbols que faz isso, acho que você coloca ela no construtor da DecimalFormat, não me lembro direito, da uma pesquisada sobre isso.

f.format(resultado).replace(',', '.')

se for só pra imprimir duas casas vc poderia fazer o seguinte System.out.printf(“nn= %.2f”,nn.format(resultado));
Vc estaria imprimindo apenas duas casas decimais de um float/double.

[quote=douglastc]se for só pra imprimir duas casas vc poderia fazer o seguinte System.out.printf(“nn= %.2f”,nn.format(resultado));
Vc estaria imprimindo apenas duas casas decimais de um float/double.[/quote]

POG :twisted:

tenta fazer assim:

para double n = 3.543;

DecimalFormat f = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(new Locale("pt", "BR))); f.format(n);

Essa questão de ser vírgula, não tem haver com numero, e sim com localização ou idioma (Locale). o padrão de formatação numérica brasileiro diz que:

separador de decimais = ,
separador de milhares = .

O que difere, por exemplo, dos EUA:
separador de decimais = .
separador de milhares = ,

Portanto, se vc tem 1 aplicação que roda num servidor com idioma en_US, ao tentar executar essa formatação de forma remota, a resposta vai ser de acordo com os padrões do EUA.

Por isso que eu instanciei o Locale, para forçar a exibição no padrão pt_BR.

:wink:

[code]DecimalFormatSymbols x = new DecimalFormatSymbols();
x.setDecimalSeparator(’.’);
DecimalFormat nn = new DecimalFormat("##.##", x);

	System.out.println("nn=" + nn.format(resultado));[/code]

Acho que isso resolve seus problemas.
:slight_smile:

Tenta isso aqui que é melhor que o replace :

private static final Locale LOCAL = new Locale("pt","BR");

double vicms= 1.20;  
double vbc = 12.58;  

DecimalFormat df = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(LOCAL));
String s = df.format(((vicms/vbc)*100));
System.out.println(s);