2010-07-10 3 views
3

Silverlight 4/C#: J'ai une étiquette montrant un nombre formaté dans la monnaie (avec 2 décimales) de la culture de fil, par ex.Chaîne Expression de format pour montrer Devise avec 2 décimales seulement s'il y a des décimales (.net)

25 spectacles comme 25,00 $ et 25,01 $ montre que

25,01

J'utilise "StringFormat = C2" pour cela. Mon problème est ... Je veux seulement montrer les 2 décimales s'il y a des décimales. par exemple.

25 devrait montrer que 25 $ et 25,01 devrait montrer que 25,01

$ Avec un nombre normal j'utiliser # - par exemple. #. ## et qui supprime les décimales si elles n'existent pas, mais je n'obtiens pas le symbole monétaire. C2. ## ne fonctionne pas.

Des suggestions s'il vous plaît? (Symbole monétaire Coder en dur est pas une option)

+0

Merci pour toutes les suggestions - donc fondamentalement il n'y a pas de syntaxe de formatage de chaîne pour cela - Je vais devoir faire une méthode dans le code derrière et l'appeler? Le problème est que j'utilise le nouveau format de liaison Silverlight 4 - Text = "{Binding TotalValueInPlay, StringFormat = C}" Je vais devoir voir si cela peut appeler des méthodes publiques ... – Rodney

Répondre

4

Vérifiez si la décimale contient un élément fractionnaire et retourner une représentation différente en fonction du résultat:

public string GetFormatStringForDecimal(myDec){ 
    return (Decimal.Ceiling(myDec) > myDec) ? "C2" : "C0"; 
} 

Cette fonction retourne une chaîne de format pour votre décimale comme spécifié dans votre question.

+0

Le type de retour sera string –

+0

@Eugene Cheverda - bien sûr c'est ... c'est comme ça que j'ai écrit la fonction et je l'ai appelée ... merci d'avoir rattrapé cette erreur stupide. – Oded

+0

Merci - J'aime cette solution - J'utilise le nouveau format de liaison Silverlight 4 - Texte = "{Binding TotalValueInPlay, StringFormat = C}" Je vais devoir voir si cela peut appeler des méthodes publiques ... – Rodney

1
decimal value = 1603.42m; 
var temp = string.Empty; 
if (Decimal.Floor(value) < value) //means value is with decimal part 
    temp = value.ToString("C2", new CultureInfo("en-US")); 
else 
    temp = value.ToString("C0", new CultureInfo("en-US")); 
return temp; 

FBTMoVGogot

Questions connexes