2010-02-26 6 views
6

Quelle est la meilleure façon de mettre en forme une quantité décimale en chaîne pour l'affichage de l'interface utilisateur dans les informations de culture correctes?Format décimal à chaîne dans les informations de culture correctes

+1

Qu'est-ce qui ne va pas avec 'myDecimal.ToString()'? – Joey

+0

Chargement de l'objet nHibernate à partir de la base de données, la propriété est décimale et lors de l'appel à toString(), il est formaté avec des décimales correctes. Cependant, lors de l'enregistrement, définissez la même propriété à partir du texte, par exemple. allocation.Price = Decimal.Parse (prix, CultureInfo.CurrentCulture); mais une fois que ce paramètre est défini et que l'allocation d'appels.Prix.toString() décimales n'est pas ajoutée. par exemple après l'analyse décimale 15 voulez 15,00 mais toString donne juste 15. Étrange? – c00ke

Répondre

8

Ajouter un format à l'ToString: myDecimal.ToString("#.00") ou myDecimal.ToString("C"). Voir http://msdn.microsoft.com/en-us/library/427bttx3.aspx

+0

La propriété nHibernate était Decimal? De ce fait, l'option de format n'était pas disponible sur la méthode toString. Maintenant créer une variable décimale et en utilisant votre réponse et fonctionne un régal. à votre santé! – c00ke

+0

si c'est un Nullable alors vous pouvez utiliser la propriété .Value ou convertir en décimal (si vous êtes sûr que ce n'est pas nul) –

1

utilisation:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false); 
+0

Ce qui ne fonctionnera que si CurrentCulture est en-US ... – Unsliced

+2

alors quoi? Il ne demande pas de cultureInfo dynamique. – NetSide

+0

JavaScript n'est pas 'Global', donc j'ai utilisé .ToString ("#. 00", New CultureInfo ("en-GB", False)) – Zymotik

0

, si vous souhaitez utiliser une culture spécifiée par l'utilisateur, vous pouvez utiliser:

yourDecimal.ToString("N2", CultureInfo.CreateSpecificCulture(userInfo);

string userInfo = "en-US";