Olá,
quando converto de double para String, um valor por exemplo 40.00, a String corta o ultimo zero deixando assim 40.0, so q como e valor em dinheiro tenho imprimir com os 2 zeros
grato.
double d = 1234.56;
String s = String.format ("%.2f", d);
System.out.println (s); // imprime "1234,56"
DecimalFormat df = new DecimalFormat ("#,##0.00");
s = df.format (d); // imprime "1.234,56"
Pra que serve o # de ???
DecimalFormat df = new DecimalFormat ("#,##0.00");
-> indica que o lugar pode ser ocupado por um dígito de 0 a 9, ou então estar vazio.
0 -> indica que o lugar pode ser ocupado por um dígito de 0 a 9
[quote=thingol]
double d = 1234.56;
String s = String.format ("%.2f", d);
System.out.println (s); // imprime "1234,56"
DecimalFormat df = new DecimalFormat ("#,##0.00");
s = df.format (d); // imprime "1.234,56"
[/quote]
funcinou perfeitamente
muito grato.
Entendi!
E a diferença de casas entre o “.” e a “,” é a periodicidade que o ponto a esquerda se repete né!
DecimalFormat df = new DecimalFormat (",##0.00");
É possível utilizar um separador “;” ou “=” por exemplo?
Outra coisa, existe uma maneira de converter o formato do numero conforme o país.
Como converter o formato padrão para o Brasil, tem como usar a classe LocaleNames_pt_BR?
É. Consulte a documentação de DecimalFormatSymbols.
Por exemplo, digamos que você quisesse formatar 1.234.567,00 como:
1.234.567$00
Ou seja, usar um separador de milhares . e um separador de ponto (vírgula) decimal $ (quem já fez contas em escudos, no tempo em que existia essa moeda em Portuga, vai reconhecer essa notação. Hoje em dia usa-se o euro.)
import java.text.*;
class TesteEscudo {
public static void main (String[] args) {
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator ('$');
dfs.setGroupingSeparator ('.');
DecimalFormat df = new DecimalFormat ("#,##0.00", dfs);
double d = 1234567.00;
System.out.println (df.format (d));
}
}
// Imprime:
// 1.234.567$00
Valeu pelas discas Vini,
Pra finalizar!
Tem algum jeito melhor de fazer isso?
Locale[] loc = Locale.getAvailableLocales();
NumberFormat f = NumberFormat.getInstance(loc[61]);
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
}
System.out.println(f.format(2103.43));//imprime 2.103,43
Abraços, Alan
NumberFormat f = NumberFormat.getInstance(loc[61]);
Confesso que esse é o código mais esdrúxulo que já vi. Qual é o locale [61]?
É o Brasil, na verdade eu gostaria de saber se existe alguma maneira de chamar pela constante que representa o brasil.
Esse código está na API, mas eu peguei só algumas partes.
e caso seu eu quissese que não jogasse nenhum zero como eu faria?
Tenta
double d = 1234.56;
String s = String.format ("%.0f", d);
ou
double d = 1234.56;
String s = String.valueof((long)(d));
Era isso que estava querendo dizer
NumberFormat nfBrazil = NumberFormat.getInstance(new Locale("pt","BR"));