2017-05-08 3 views
1

Ich versuche, Ketteninterpretation von doppeltem Wert mit Punkt als Trennzeichen und zwei Dezimalstellen zu bekommen, aber (?):Number NumberDecimalDigits nicht funktioniert

double d = 8.78595469; 
Console.WriteLine(d.ToString("F")); 

Returns 8,78

So versuche ich zu nutzen NumberFormatInfo Klasse nach this Frage:

double d = 8.78595469; 

var formatInfo = new NumberFormatInfo 
{ 
    NumberDecimalSeparator = ".", 
    NumberDecimalDigits = 2 
}; 

Console.WriteLine(d.ToString(formatInfo)); 

Returns 8.78595469, gut separ Ator ist Punkt genau das, was ich wollte, aber warum gibt es mehr als 2 Dezimalstellen?

EDIT:

Ich bin nicht für andere Art und Weise suchen, dies zu erreichen (kann ich .ToString("0.00", CultureInfo.InvariantCulture) verwenden, aber ich frage mich, warum NumberDecimalDigits nicht (in Betrieb)

+0

d.ToString ("F", formatInfo)? –

Antwort

3

Wenn Sie verwenden möchten? NumberFormatInfo, dann müssen Sie den N-Format-Spezifizierer verwenden

double d = 8.78595469; 

var formatInfo = new NumberFormatInfo 
{ 
    NumberDecimalSeparator = ".", 
    NumberDecimalDigits = 2 
}; 

Console.WriteLine(string.Format(formatInfo, "{0:N}", d)); <--- N specifier