Frage

Ich versuche String.Format ( „{0: c}“, somevalue) zu verwenden, in C #, aber eine harte Zeit, herauszufinden, habe, wie die Ausgabe zu konfigurieren, meine Bedürfnisse zu erfüllen. Hier sind meine Bedürfnisse:

  1. 0 Ausgänge blank
  2. 1,00 Ausgänge auf $ 1,00
  3. 10.00 Ausgänge $ 10.00
  4. 100.00 Ausgänge $ 100.00
  5. 1000.00 Ausgänge auf $ 1.000,00

Ich habe versucht, String.Format ( „{0: c}“, somevalue), aber für Null-Werte gibt es $ 0,00 das ist nicht das, was ich will. Ich habe auch String.Format ( "{0: $ 0,0.00; $ (0,0.00); #}", somevalue) versucht, aber für 1,0 gibt er 01,00 $. String.Format ( "{0: $ 0,00; $ (0,00); #}", somevalue) funktioniert für die meisten Fälle, aber wenn somevalue 1000.00 ist der Ausgang ist $ 1000,00.

Gibt es ein Format, das alle fünf Fälle oben passen? Die gesamte Dokumentation ich nur gelesen haben, die Grundlagen Details und auf diese Art von Szenario nicht berührt.

War es hilfreich?

Lösung

Wenn Sie

string.Format("{0:$#,##0.00;($#,##0.00);''}", value)

Sie erhalten „“ für den Nullwert und die anderen Werte sollten ordnungsgemäß zu formatiert werden.

Andere Tipps

Versuchen Sie etwas wie folgt aus:

String currency = (number == 0) ? String.Empty : number.ToString("c");

Je nachdem, ob Sie den gleichen Datentyp für alle Ihre Währungswerte konsequent verwenden, können Sie eine Erweiterungsmethode schreiben, die es so, dass Ihr Fall wird immer erfüllt wäre. wenn Sie den Dezimal-Typ Zum Beispiel wurden mit:

public static string ToCurrencyString (this decimal value)
{
  if (value == 0)
    return String.Empty;
  return value.ToString ("C");
}

Hier eine große Referenz, die Ihnen nützlich sein könnten, die diese Daten zusammen: http: //blog.stevex .net / string-Formatierung-in-csharp /

Die „C“ Währungsformate sind groß, bis Sie eine leere benötigen für 0. Es gibt zwei Möglichkeiten, eine über, ähnlich denen, die erwähnt, die ich verwenden, die Sie den Rohling geben für 0:

// one way
string.Format("{0:$#,##0.00;($#,##0.00);''}", somevalue)

// another way
somevalue.ToString("$#,##0.00;($#,##0.00);''")

Die zweite Technik fühlt sich mehr „fließend“, wenn Sie möchten, dass Stil-Code (wie ich).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top