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.
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]
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.
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);