Ich habe diesen Code:

var a = (((double)x.Row.Points / x.Row.Viewed) * 100).ToString("D3")

Was ich möchte, ist, dass a Werte wie "0", "1", "10" oder "100" ohne Dezimalstellen hat.

Aber es gibt mir diesen Stapelfehler. Kann jemand erklären, warum die D3 als Formatzeichenfolge nicht funktioniert? Beachten Sie, dass es vorher in Ordnung war, als es nur ToString () war.

System.FormatException: Das angegebene Format 'D2' ist ungültig

c#
1
Alan2 19 Jän. 2019 im 15:45

3 Antworten

Beste Antwort

Der Dezimalformatbezeichner funktioniert nur mit Ganzzahltypen:

Unterstützt von: Nur integrale Typen.

Es wird auch zum Auffüllen mit Nullen auf der linken Seite verwendet, was nicht das zu sein scheint, was Sie wollen. Für Ihre Zwecke können Sie einfach zu einem int:

var a = ((int)(((double)x.Row.Points / x.Row.Viewed) * 100)).ToString()
1
Kirk Woll 19 Jän. 2019 im 12:51

Verwenden Sie diese Option, um eine Zahl in int umzuwandeln:

int int = Convert.ToInt32(number);
1
Ali Ali 19 Jän. 2019 im 12:50

Das Format "D3" lautet wird nur für integrale Typen unterstützt.

D.h.

Das funktioniert:

int myNumber = 1;
var val = myNumber.ToString("D3");

Dies ergibt ein FormatException:

double myNumber = 1.0;
var val = myNumber.ToString("D3");
1
steve16351 19 Jän. 2019 im 12:50