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. Aqui está um exemplo simples para resolver este problema:
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 = new DecimalFormat ("####. 000"); System.out.println (df1.format (1234.56)); // obtenha o formato alemão Locale.SetDefault (Locale.German); Decimalformat df2 = new 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. Se não for suficiente, estará vazio. Se houver três números após o ponto decimal, ele será preenchido com 0. Saída do programa:
1234.560
1234.560
Da mesma forma, os formatos em forma exponencial também podem ser controlados, por exemplo:
importar java.text.decimalformat; classe pública decimalformat3 {public static void main (string args []) {decimalformat df = new decimalformat ("0,000e0000"); System.out.println (df.format (1234.56));}} Saída:
1.235E0003
Para porcentagens:
importar java.text.NumberFormat; public class 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:
importar java.util.locale; importar java.text.numberFormat; importar java.text.parseException; classe pública decimalformat5 {public static void main (string args []) {// formato local númeroFormat nf1 = numberFormat.getInstance (); Objeto obj1 = null; // Parsing baseado em formato tente {obj1 = nf1.parse ("1234,56"); } catch (parseException e1) {System.err.println (e1); } System.out.println (obj1); // formato alemão númeroFormat nf2 = numberFormat.getInstance (Locale.German); Objeto obj2 = null; // Parsing baseado em formato tente {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 nos Estados Unidos "123456" e um decimal na Alemanha "1234.56".
Decimalformat e NumberFormat Connection
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:
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, tente {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 numérico.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, saída:
1234.56000
Se você não se importa com a internacionalização, pode usar o DecimalFormat diretamente.
Onde V é uma dupla não processada, a escala é a precisão necessária e retorna um duplo que requer um dígito decimal.
public static duplo rodada (Double V, int Scale) {if (escala <0) {lança nova ilegalArgumentException ("A escala deve ser um número inteiro positivo ou zero"); } BigDecimal b = novo bigdecimal (duplo.toString (v)); BigDecimal One = novo BigDecimal ("1"); retornar b.divida (um, escala, bigdecimal.round_half_up) .doubleValue (); } O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.