Classe principal usada: java.text.decimalformat
1. Para instanciar um objeto, você pode usar os dois métodos a seguir:
A cópia do código é a seguinte:
Decimalformat df = (decimalformat) numberFormat.getInstance ();
Decimalformat df1 = (decimalformat) decimalformat.getInstance ();
Porque o decimalformato herda do númeroFormat.
2. Defina o número de lugares decimais
O sistema padrão para os lugares decimais é 3, como:
A cópia do código é a seguinte:
Decimalformat df = (decimalformat) numberFormat.getInstance ();
System.out.println (df.format (12.3456789));
Saída: 12.346
Agora você pode definir o decimal para dois dígitos pelo seguinte método:
A cópia do código é a seguinte:
df.setMaximumfractionDigits (2);
System.out.println (df.format (12.3456789));
Então a saída é: 12.35
3. Existem duas maneiras de converter números em produção percentual:
(1)
A cópia do código é a seguinte:
df.ApplyPattern ("##. ##%");
System.out.println (df.format (12.3456789));
System.out.println (df.format (1));
System.out.println (df.format (0,015));
As saídas são: 1234,57% 100% 1,5%
(2)
A cópia do código é a seguinte:
df.setMaximumfractionDigits (2);
System.out.println (df.format (12.3456789*100)+"%");
System.out.println (df.format (1*100)+"%");
System.out.println (df.format (0,015*100)+"%");
As saídas são:
1.234,57% 100% 1,5%
4. Defina o tamanho do grupo
A cópia do código é a seguinte:
Decimalformat df1 = (decimalformat) decimalformat.getInstance ();
df1.setGroupingsize (2);
System.out.println (df1.format (123456789));
Saída: 1,23,45,67,89
Você também pode desativar as configurações de agrupamento por df1.setGroupingUSED (false);
A cópia do código é a seguinte:
Decimalformat df1 = (decimalformat) decimalformat.getInstance ();
df1.setGroupingsize (2);
df1.setGroupingUSED (false);
System.out.println (df1.format (123456789));
Saída: 123456789
5. Defina o decimal para 2 dígitos
A cópia do código é a seguinte:
Decimalformat df2 = (decimalformat) decimalformat.getInstance ();
df2.ApplyPattern ("0,00");
System.out.println (df2.Format (1.2));
Saída: 1.20
Às vezes, precisamos controlar o formato dos números de saída.
Talvez você não se preocupe com o formato, mas precisa se preocupar com o seu programa universal em todo o mundo.
System.out.println (1234.56);
Nos Estados Unidos ". Como lidar com isso?
Alguns pacotes no pacote java.text podem lidar com esse tipo de problema. O exemplo simples a seguir usa essas classes para resolver o problema levantado acima:
A cópia do código é a seguinte:
importar java.Text.NumberFormat;
importar java.util.locale;
classe pública decimalformat1 {
public static void main (string args []) {
// Obtenha o formato padrão local
NumberFormat nf1 = numberFormat.getInstance ();
System.out.println (nf1.format (1234.56));
// Obtenha o formato alemão
NumberFormat nf2 =
NumberFormat.GetInstance (Locale.German);
System.out.println (nf2.Format (1234.56));
}}
Se você estiver nos Estados Unidos, depois de executar o programa, Saída:
1.234,56
1.234,56
Em outras palavras, use hábitos diferentes para representar números em diferentes lugares.
O método numberFormat.getInstance () retorna uma instância do númeroFormat (na verdade, uma subclasse específica do númeroFormat, como o DecimalFormat), que é adequado para formatar um número com base em configurações locais. Você também pode usar configurações regionais que não sejam do Defacult, como a Alemanha. O método de formatação formata os números de acordo com regras regionais específicas. Este programa também pode ser usado de forma simples:
NumberFormat.getInstance (). Formato (1234.56)
Mas salvar um formato e depois reutilizá -lo é mais eficiente. A internacionalização é um grande problema ao formatar números.
Outro é o controle eficaz sobre o formato, como especificar o número de dígitos na parte fracionária.
A cópia do código é a seguinte:
importar java.text.decimalformat;
importar java.util.locale;
classe pública decimalformat2 {
public static void main (string args []) {
// Obtenha o formato padrão local
Decimalformat df1 = novo decimalformat ("###. 000");
System.out.println (df1.format (1234.56));
// Obtenha o formato alemão
Locale.SetDefault (Locale.German);
Decimalformat df2 = novo decimalformat ("###. 000");
System.out.println (df2.Format (1234.56));
}
}
Neste exemplo, o formato numérico é definido, usando símbolos como "####. 000". Este modo significa que existem quatro números antes do ponto decimal. Saída do programa:
1234.560
1234.560
Da mesma forma, os formatos em forma exponencial também podem ser controlados, por exemplo:
A cópia do código é a seguinte:
importar java.text.decimalformat;
classe pública decimalformat3 {
public static void main (string args []) {
Decimalformat df = novo decimalformat ("0,000e0000");
System.out.println (df.format (1234.56));
}
}
Saída:
1.235E0003
Para porcentagens:
A cópia do código é a seguinte:
importar java.Text.NumberFormat;
classe pública decimalformat4 {
public static void main (string args []) {
NumberFormat nf = numberFormat.getPercentInstance ();
System.out.println (nf.format (0,47));
}
}
Saída:
47%
Até agora, você viu várias técnicas diferentes para formatar números. Por outro lado, como leio e analiso uma string contendo números formatados? O suporte à resolução está incluído no númeroFormat. Por exemplo:
A cópia do código é a seguinte:
importar java.util.locale;
importar java.Text.NumberFormat;
importar java.text.parseException;
classe pública decimalformat5 {
public static void main (string args []) {
// formato local
NumberFormat nf1 = numberFormat.getInstance ();
Objeto obj1 = null;
// Parsing baseado em formato
tentar {
obj1 = nf1.parse ("1234,56");
}
Catch (parseException E1) {
System.err.println (e1);
}
System.out.println (obj1);
// formato alemão
NumberFormat nf2 =
NumberFormat.GetInstance (Locale.German);
Objeto obj2 = null;
// Parsing baseado em formato
tentar {
obj2 = nf2.parse ("1234,56");
}
Catch (parseException e2) {
System.err.println (e2);
}
System.out.println (obj2);
}
}
Este exemplo é dividido em duas partes, as quais analisam uma corda: "1234,56". A primeira parte usa o formato local para analisar, enquanto a segunda parte usa o formato alemão para analisar. Quando o programa é executado nos Estados Unidos, o resultado é:
123456
1234.56
Em outras palavras, "1234,56" é considerado um grande número inteiro de 123456 nos Estados Unidos e um decimal de "1234.56" na Alemanha.
Há também a última questão de formatar discussão. No exemplo acima, o DecimalFormat e o NumberFormat são usados. O DecimalFormat é frequentemente usado para obter um bom controle de formato, enquanto o NumberFormat é frequentemente usado para especificar regiões diferentes das locais. Como combinar duas categorias?
A resposta gira em torno do fato de que o DecimalFormat é uma subclasse do númeroFormat, cuja instância é especificada como uma região específica. Portanto, você pode especificar uma região usando o numberFormat.getInstance e depois lançar a estrutura em um objeto decimalformat. A documentação menciona que essa técnica pode ser aplicada na maioria dos casos, mas você precisa usar um bloco de tentativa/captura para cercar o elenco, caso a conversão não funcione corretamente (presumivelmente usando uma área estranha em situações muito discretas). Aqui está um exemplo como este:
A cópia do código é a seguinte:
importar java.text.decimalformat;
importar java.Text.NumberFormat;
importar java.util.locale;
classe pública decimalformat6 {
public static void main (string args []) {
Decimalformat df = null;
// Obtenha um objeto NumberFormat e
// fundido para um objeto decimalformat
tentar {
df = (decimalformat)
NumberFormat.GetInstance (Locale.German);
}
Catch (ClassCastException e) {
System.err.println (e);
}
// Defina o modo de formato
df.ApplyPattern ("####. 00000");
// formate um número
System.out.println (df.format (1234.56));
}
}
O método getInstance () obtém o formato e, em seguida, chama o método ApplyPattern () para definir o modo de formato e saídas:
1234.56000
Se você não se importa com a internacionalização, pode usar o DecimalFormat diretamente.