Pour afficher une devise, nous faisons:
ToString("0.##")
Pour la valeur 5.00
, le résultat est:
5
Pour la valeur 5.98
, le résultat est:
5.98
Pour la valeur 5.90
, le résultat est:
5.9
J'ai besoin du troisième cas pour sortir avec 2 décimales, par exemple:
5.90
Comment puis-je faire cela sans que cela affecte les autres résultats?
Je sais que cela ne vous donne pas un format qui résout le problème, mais c'est une solution simple pour contourner le problème.
(5.00).ToString("0.00").Replace(".00",""); // returns 5
(5.90).ToString("0.00").Replace(".00", ""); // returns 5.90
(5.99).ToString("0.00").Replace(".00", ""); // returns 5.99
Essayer:
s.ToString("#,##0.00")
Ou juste:
s.ToString("C")
Je ne connais aucun moyen intégré pour développer les deux décimales uniquement lorsque les deux ne sont pas nuls. Nous utiliserions probablement simplement une instruction if
pour cela.
int len = s.Length;
if (s[len - 2] == '0' && s[len - 1] == '0')
s = s.Left(len - 3);
Vous pouvez utiliser une méthode d'extension, quelque chose comme ceci:
public static string ToCurrencyString(this decimal d)
{
decimal t = Decimal.Truncate(d);
return d.Equals(t) ? d.ToString("0.##") : d.ToString("#, ##0.00")
}
#
signifie que s'il n'y a pas de numéro, laissez-le vide
ToString ("0.00")
Je ne sais pas si je manque quelque chose, mais vous ne pouvez pas simplement faire ceci
decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);