Compartilhar via


Formatação de dados numéricos para uma cultura específica

The NumberFormatInfo classe define como moeda, separadores Decimal e outros símbolos numéricos são formatados e exibidos com base na cultura. Por exemplo, o número decimal 10000.50 é formatado sistema autônomo 10,000.50 para inglês (E.u.a.), a cultura "en-US" e 10.000,50 para alemão (Alemanha), a cultura "de-DE".

A NumberFormatInfo objeto pode ser criado para uma cultura específica ou a cultura invariável, mas não para uma cultura neutra. Uma cultura neutra não fornece informações suficientes para exibir o formato numérico correto.Uma exceção é lançada se o aplicativo tentar criar um NumberFormatInfo objeto usando uma cultura neutra.

O exemplo de código a seguir exibe um inteiro usando o NumberFormatInfoformato de moeda padrão ("c") para a cultura corrente.

Imports System
Imports System.Globalization

Public Class TestClass

   Public Shared Sub Main()
      Dim i As Integer = 100
      
      ' Creates a CultureInfo for English in Belize.
      Dim bz As New CultureInfo("en-BZ")
      ' Displays i formatted as currency for the bz.
      Console.WriteLine(i.ToString("c", bz))
      
      ' Creates a CultureInfo for English in the U.S.
      Dim us As New CultureInfo("en-US")
      ' Displays i formatted as currency for us.
      Console.WriteLine(i.ToString("c", us))
      
      ' Creates a CultureInfo for Danish in Denmark.
      Dim dk As New CultureInfo("da-DK")
      ' Displays i formatted as currency for dk.
      Console.WriteLine(i.ToString("c", dk))
   End Sub
End Class
using System;
using System.Globalization;

public class TestClass
{
   public static void Main()
   {
      int i = 100;
      
      // Creates a CultureInfo for English in Belize.
      CultureInfo bz = new CultureInfo("en-BZ");
      // Displays i formatted as currency for the bz.
      Console.WriteLine(i.ToString("c", bz));
      
      // Creates a CultureInfo for English in the U.S.
      CultureInfo us = new CultureInfo("en-US");
      // Display i formatted as currency for us.
      Console.WriteLine(i.ToString("c", us));
      
      // Creates a CultureInfo for Danish in Denmark.
      CultureInfo dk = new CultureInfo("da-DK");
      // Displays i formatted as currency for dk.
      Console.WriteLine(i.ToString("c", dk));
   }
}

Este código produz a seguinte saída:

BZ$100.00
$100.00
kr100,00

Formatação de moeda do Euro Nations

The CultureInfo e RegionInfo ambas as classes incluem informações sobre moeda. Apenas uma moeda é especificada por cultura.O euro é a moeda oficial da Bélgica, Alemanha, Espanha, França, Irlanda, Itália, Luxemburgo, países baixos, Áustria, Portugal, Finlândia e Grécia.Em 1 de janeiro de 2002, essas nações iniciado usando o euro banco notas e moedas.Portanto, o .NET estrutura e o Microsoft Windows XP conjunto o símbolo de moeda padrão para o euro para esses doze Nações.Versões mais antigas do Windows ainda conjunto o símbolo de moeda padrão para a moeda local para essas nações.

Você deve estar ciente das diferenças de sistema operacional entre símbolos de moeda padrão.No Windows, os usuários serão capazes de substituir alguns dos valores associados com a cultura padrão do sistema operacional através das opções regionais e de linguagem no painel de controle.Por exemplo, um usuário pode optar por exibir moeda usando um símbolo diferente da padrão para a cultura.Aplicativos de console do Windows Forms e usam o símbolo de moeda padrão especificado no sistema operacional.Um usuário em um Country ou região em uma versão mais antiga do Windows, que não tiver atualizado a configuração de moeda do euro através das opções regionais e de linguagem no painel de controle, de adotar o euro terá uma configuração de moeda padrão incorreto.Aplicativos ASP.NET e aplicativos XML Web Services criados no ASP.NET são executados sistema autônomo serviços do sistema, não para usuários específicos.Portanto, os resultados do padrão que elas retornam podem diferir daqueles retornados pelo Windows Forms e aplicativos de console.

Recomenda-se que você escreva código que usa o padrão do .NET estrutura moeda configurações para uma cultura para proteger o seu aplicativo de diferenças do sistema operacional e para garantir consistente moeda formatação.Seu aplicativo deve criar um CultureInfo objeto usando uma das sobrecargas de construtor que aceita um useUserOverride parâmetro e conjunto este parâmetro como false. Esta configuração faz com que a configuração de moeda padrão no sistema de operacional do usuário para ser substituído pela configuração padrão correta para o .NET estrutura.

No código a seguir serviço Web XML, o UserLocalSetting Conjuntos de método de serviço XML da Web do CurrentCulturepropriedade para francês (França), "fr-FR" e recupera um número inteiro formatado sistema autônomo moeda. Devido às diferenças do sistema operacional, você não pode ter certeza se o símbolo do euro ou o símbolo de "F" é usado.The OverrideUserSetting Conjuntos de método de servidor XML Web a CurrentCulturepropriedade como "fr-FR" usando o CultureInfo construtor que aceita um useUserOverride parâmetro com uma configuração de false. Este método recupera um número inteiro formatado sistema autônomo moeda.Nesse caso, é garantido que o símbolo do euro será usado porque é o padrão do .NET estrutura.

 [Visual Basic]
<%@ WebService Language="VB" Class="userOverrideSample" %>

Imports System
Imports System.Web.Services
Imports System.Globalization
Imports System.Threading

Public Class userOverrideSample

   <WebMethod> _
   Public Function UserLocalSetting() As String
      Dim i As Integer = 100

      ' Sets the CurrentCulture to French in France.
      Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-FR")
      ' Displays i formatted as currency for the CurrentCulture.
      ' Due to operating system differences, you cannot be sure what currency
      ' symbol will be used.
      return (i.ToString("c"))
   End Function

   <WebMethod> _
   Public Function OverrideUserSetting() As String
      Dim i As Integer = 100

      ' Sets the CurrentCulture to French in France.
      ' Uses the CultureInfo constructor that takes a 
      ' useUserOverride parameter.
      ' Sets the useUserOverride value to false.
      Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-FR", _
         false)
      ' Displays i formatted as currency for the CurrentCulture.
      ' This will override any user settings and display the euro symbol.
      return (i.ToString("c"))
   End Function 
End Class
<%@ WebService Language="c#" Class="userOverrideSample" %>

using System;
using System.Web.Services;
using System.Globalization;
using System.Threading;

public class userOverrideSample
{
   [WebMethod]
   public String UserLocalSetting()
   {
      int i = 100;

      // Sets the CurrentCulture to French in France.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
      // Displays i formatted as currency for the CurrentCulture.
      // Due to operating system differences, you cannot be sure what currency
      // symbol will be used.
      return (i.ToString("c"));
   }   
   
   [WebMethod]
   public String OverrideUserSetting()
   {
      int i = 100;

      // Sets the CurrentCulture to French in France.
      // Uses the CultureInfo constructor that takes a 
      // useUserOverride parameter.
      // Sets the useUserOverride value to false.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR", _
         false);
      // Displays i formatted as currency for the CurrentCulture.
      // This will override any user settings and display the euro symbol.
      return (i.ToString("c"));
   }
}

Aplicativos de console que está sendo executado em todas as versões dos sistemas operacionais Windows do Windows Forms e conjunto o símbolo de moeda padrão do tings conjunto no computador do usuário.sistema autônomo mencionado anteriormente, essa configuração pode estar incorreta.Para garantir o uso do padrão do .NET estrutura conjunto tings, seu aplicativo deve criar um CultureInfo objeto, passando um useUserOverride parâmetro conjunto para false.

O exemplo a seguir usa o código que é semelhante ao exemplo anterior.Define a cultura corrente sistema autônomo "fr-FR" e exibe um número inteiro para o console formatado sistema autônomo moeda.Configurações de moeda local do usuário são usadas para formatar a moeda.Em seguida, a cultura estiver definida como "fr-FR" usando oCultureInfo construtor que aceita o useUserOverride parâmetro definido como false. O número é formatado usando as configurações padrão do .NET estrutura e o símbolo do euro é exibido.

 [Visual Basic]
Imports System
Imports System.Globalization
Imports System.Threading

Public Class EuroSymbolSample
   Public Shared Sub Main()
      Dim i As Integer = 100
      
      ' Sets the CurrentCulture to French in France.
      Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-FR")
      ' Displays i formatted as currency for the CurrentCulture.
      ' On a version of Windows prior to Windows XP, where the user
      ' has not changed the default currency to euro through the
      ' Control Panel, this will default to "F".
      Console.WriteLine(i.ToString("c"))
      
      
      ' Sets the CurrentCulture to French in France, using the
      ' CultureInfo constructor that takes a useUserOverride parameter.
      ' Sets the useUserOverride value to false. 
      Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-FR", _ 
         False)
      ' Displays i formatted as default currency for the CurrentCulture.
      ' On a version of Windows prior to Windows XP, this will override an
      ' incorrect default setting of "F" and display the euro symbol ().
      Console.WriteLine(i.ToString("c"))
   End Sub
End Class
using System;
using System.Globalization;
using System.Threading;

public class EuroSymbolSample
{
   public static void Main()
   {
      int i = 100;

      // Sets the CurrentCulture to French in France.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
      // Displays i formatted as default currency for the CurrentCulture.
      // On a version of Windows prior to Windows XP, where the user
      // has not changed the default currency to euro through the
      // Control Panel, this will default to "F".
      Console.WriteLine(i.ToString("c"));

      // Sets the CurrentCulture to French in France, using the
      // CultureInfo constructor that takes a useUserOverride parameter.
      // Sets the useUserOverride value to false. 
      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR", 
            false);
      // Displays i formatted as default currency for the CurrentCulture.
      // On a version of Windows prior to Windows XP, this will override an
      // incorrect default setting of "F" and display the euro symbol ().
      Console.WriteLine(i.ToString("c"));      
   }
} 

Observe que o ambiente do console não suporta o caractere do euro.Se você executar esse código em um aplicativo Windows Forms, a saída é exibida da seguinte forma:

100,00 F
100,00 €

Muitos países europeus têm duas moedas em comum usar: o símbolo do euro e moeda local.Pode haver situações em que é necessário exibir ambas as moedas em um aplicativo.O exemplo de código a seguir cria um CultureInfoobjeto para a cultura "fr-FR" onde a moeda padrão é o euro. Para exibir o símbolo de moeda para moeda local, você deve usar o NumberFormatInfo.Clone método para clonar um novo NumberFormatInfo para o CultureInfo e substitua o símbolo de moeda padrão com um símbolo de moeda local.

Imports System
Imports System.Globalization
Imports System.Threading

Public Class EuroLocalSample
   Public Shared Sub Main()
      ' Creates a CultureInfo for French in France.
      Dim FrCulture As New CultureInfo("fr-FR")
      ' Sets the CurrentCulture to fr-FR.
      Thread.CurrentThread.CurrentCulture = FrCulture
      
      ' Clones the NumberFormatInfo and creates
      ' a new object for the local currency of France.
      Dim LocalFormat As NumberFormatInfo =_
         CType(NumberFormatInfo.CurrentInfo.Clone(), NumberFormatInfo)
      ' Replaces the default currency symbol 
      ' with the local currency symbol.
      LocalFormat.CurrencySymbol = "F"
      
      Dim i As Integer = 100
      ' Displays i formatted as the local currency.
      Console.WriteLine(i.ToString("c", LocalFormat))
      
      ' Displays i formatted as the default currency.
      Console.WriteLine(i.ToString("c", NumberFormatInfo.CurrentInfo))
   End Sub
End Class 
using System;
using System.Globalization;
using System.Threading;

public class EuroLocalSample
{
   public static void Main()
   {             
      // Creates a CultureInfo for French in France.
      CultureInfo FrCulture = new CultureInfo("fr-FR");
      // Sets the CurrentCulture to fr-FR.
      Thread.CurrentThread.CurrentCulture = FrCulture;

      // Clones the NumberFormatInfo and creates
      // a new object for the local currency of France.
      NumberFormatInfo LocalFormat = 
         (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();
      // Replaces the default currency symbol with the 
      // local currency symbol.
      LocalFormat.CurrencySymbol = "F";

      int i = 100;

      // Displays i formatted as the local currency.
      Console.WriteLine(i.ToString("c", LocalFormat));

      // Displays i formatted as the default currency.
      Console.WriteLine(i.ToString("c", NumberFormatInfo.CurrentInfo));
   }
}

Para obter um exemplo relacionado, consulte o exemplo MultiCurrency no QuickStart de tarefas comuns.

Consulte também

Conceitos

Formatação para diferentes culturas

Outros recursos

Codificação e localização

Tipos de Formatação