Um eine Währung anzuzeigen, machen wir:
ToString("0.##")
Für den Wert 5.00
lautet die Ausgabe:
5
Für den Wert 5.98
lautet die Ausgabe:
5.98
Für den Wert 5.90
lautet die Ausgabe:
5.9
Ich brauche den dritten Fall, um 2 Dezimalpunkte zu erhalten, zB:
5.90
Wie kann ich das tun, ohne die anderen Ergebnisse zu beeinflussen?
Ich weiß, das gibt Ihnen kein Format, das das Problem löst, aber es ist eine einfache Lösung, um es zu umgehen.
(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
Versuchen:
s.ToString("#,##0.00")
Oder nur:
s.ToString("C")
Ich kenne keinen integrierten Weg, um alle zwei Dezimalstellen nur dann auszudehnen, wenn beide nicht Null sind. Würde wahrscheinlich nur eine if
-Anweisung dafür verwenden.
int len = s.Length;
if (s[len - 2] == '0' && s[len - 1] == '0')
s = s.Left(len - 3);
Sie können eine Erweiterungsmethode verwenden, etwa wie folgt:
public static string ToCurrencyString(this decimal d)
{
decimal t = Decimal.Truncate(d);
return d.Equals(t) ? d.ToString("0.##") : d.ToString("#, ##0.00")
}
#
bedeutet, wenn keine Nummer vorhanden ist, lassen Sie das Feld leer. 0 bedeutet, eine 0 eingeben, wenn keine Nummer vorhanden ist
ToString ("0,00")
Ich bin mir nicht sicher, ob mir etwas fehlt, aber Sie können dies nicht einfach tun:
decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);