2011-04-30 4 views
1

En C# le code Console.WriteLine("{0:c}", 998); donne la sortie $998 en paramètres par défaut "US-Language". Mais si je veux changer de façon dynamique mon symbole monétaire à Pound, Sterling, ou Roupie tout symbole monétaire selon les préférences de l'utilisateur, est-il autour de le faire. Dites, j'appelle une méthode:Monnaie de mise en forme avec Dynamic Currency Symbole

public void PrintInRightCurrencyFormat(decimal value, ICustomFormatter format) 
{ 
    Console.WriteLine(... ... ...); 
} 

Et cette méthode imprimera la valeur au format requis.

Une chose est que est-il possible d'insérer un symbole de devise personnalisé. Mon point est que si une devise vient avec un nouveau symbole (comme l'Inde a fait avec son symbole Roupie), comment activer cela immédiatement dans le code.

Merci d'avance.

+3

Vous pouvez le faire par 'CultureInfo' mais vous avez besoin prendre soin de la conversion des devises; 50 $! = Rs 50 –

Répondre

3

Vous pouvez utiliser une culture:

Console.WriteLine(string.Format(new CultureInfo("en-GB"), "{0:c}", value)); 

ou simplement définir la culture actuelle de fil à une préférence de l'utilisateur, puis imprimer la valeur:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); 
Console.WriteLine("{0:c}", value); 
+3

+1 Non seulement 'could' vous utilisez une culture, vous avez réellement' should'! Je suggère de changer la culture à un niveau plus général cependant, peut-être dans le 'niveau web.config' ou fil (http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentculture.aspx). Notez également que la devise doit être stockée en tant que "décimal" et non "double" en raison des différences d'arrondi. – Bazzz

+0

Merci pour votre réponse. Pouvez-vous donner un lien qui peut donner la liste de culture prédéfinie. –

+1

@Arnab Das, voici une: http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.71).aspx –