5 votes

Formatage des nombres dans différentes cultures

En supposant une culture invariante Est-il possible de définir un séparateur de groupe différent de la virgule dans le format ?

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Console.WriteLine(String.Format("{0:#,##0}", 2295));

Sortie :

2,295

Résultat souhaité :

2.295

La culture invariante est une exigence car les monnaies de nombreuses localités différentes sont formatées avec des chaînes de format, qui ont été définies par l'utilisateur. Par exemple, au Danemark, le format de prix est "{0:0},-", alors qu'en Irlande, il peut être "€{0:#,##0}".

9voto

PVitt Points 5652

Lorsque vous avez des chaînes de format différentes, cela ne signifie pas que vous devez utiliser InvariantCulture. Si vous avez une chaîne de format pour l'Allemagne, par exemple, vous pouvez formater cette chaîne en utilisant Culture("de-de") :

String.Format(CultureInfo.GetCultureInfo( "de-de" ), "{0:0},-", 2295) //will result in 2.295,-
String.Format(CultureInfo.GetCultureInfo( "en-us" ), "{0:0},-", 2295) //will result in 2,295,-

Vous pouvez également spécifier votre propre info sur le format des nombres :

NumberFormatInfo nfi = new NumberFormatInfo( )
{
    CurrencyGroupSeparator = ":"
};
String.Format(nfi, "{0:0},-", 2295) //will result in 2:295,-

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X