2014-09-08 7 views
5

I eine beliebige Zahl (integer oder real) zu einer Zeichenfolgendarstellung zu forma die immer hat ein Zeichen (positiv oder negativ) und ein Dezimalzeichen, aber keine abschließenden Nullen.Format eine Nummer hat immer ein Zeichen und Dezimalzeichen

Einige Beispiele:

3.14 => +3.14 
12.00 => +12. 
-78.4 => -78.4 
-3.00 => -3. 

ist möglich, es mit einer der Standard-ToString() Implementierungen oder muss ich das selbst schreiben?

+1

Es gibt keine bereits implementierte Möglichkeit, ein Dezimaltrennzeichen gefolgt von n anzuzeigen nichts (AFAIK). Also musst du das auf dich selbst anwenden. – Oliver

Antwort

7

versuchen, etwas wie folgt aus:

double x = -12.43; 
string xStr = x.ToString("+0.#####;-0.#####"); 

Aber das würde nicht helfen Dezimalkomma Hinter anzuzeigen. Sie können solche Situationen mit dieser Methode behandeln:

public static string MyToString(double x) 
{ 
    return x == Math.Floor(x) 
     ? x.ToString("+0;-0;0") + CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator 
     : x.ToString("+0.####;-0.####"); 
} 
+0

Wahrscheinlich die beste Antwort noch. Aber ich fühle, dass wir den Dezimalpunkt nicht erzwingen können, wenn sie keine abschließenden Nullen sind. –

+0

Ok, jetzt funktioniert es genauso wie ich will! Vielen Dank! –

+1

Angenommen, dies ist eine Erweiterungsmethode, fehlt das Schlüsselwort 'this'. d. h. 'public static string MyToString (dieses doppelte x)' –

0

Sie können wie folgt versuchen:

string myFormatedString = number.ToString("+#;-#"); 
+0

Dies zeigt keine Ziffern hinter dem Dezimaltrennzeichen an. – Dmitry

0

Der Format-String Sie verwenden möchten

ToString("N", CultureInfo.InvariantCulture) // Displays -12,445.68 

here für zusätzliche Optionen anzeigen für Formatzeichenfolgen

+0

Dies zeigt nicht die Endziffer an, wenn keine abschließenden Nullen vorhanden sind. – Nzall