2010-11-23 12 views
3

Mögliche Duplizieren:
c# - How do I round a decimal value to 2 decimal places (for output on a page)Wie man eine Dezimalzahl richtig rundet und formatiert?

Ich versuche, meine Dezimalstellen mit vier Dezimalstellen angezeigt zu bekommen. Der DB rundet meine Zahl auf 4 Dezimalstellen auf, gibt aber die Zahl mit nachgestellten 0s zurück (aufgrund der Dezimalgenauigkeit des Felds), also etwa 9,45670000. Dann, wenn ich dies tun:

string.Format("{0:#,#.####}", decimalValue); 

Der Ausgang I auf der Seite erhalten, ist 9,4567, das ist, was ich will.

Wenn jedoch die Anzahl von DB zurück 9,45600000 ist, wird der Ausgang nach dem Format zu tun ist 9,456

Aber was ich angezeigt werden muß, ist 9,4560

Wie kann ich meine Dezimalformat, so dass die Anzahl von Dezimalstellen ist immer vier?

UPDATE: Ist es auch möglich, eine Variable (anstelle von .0000) zu verwenden, wenn ich die Anzahl der Dezimalstellen dynamisch bestimmen wollte?

Antwort

13
string.Format("{0:N4}",decimalValue); 

Standard Numeric Format Strings

Custom Numeric Format Strings

die Präzision einzustellen dynamisch können Sie wie folgt vorgehen:

double value = 9.4560000; 
int precision = 4; 
string format = String.Format("{{0:N{0}}}",precision); 
string valuestring = String.Format(format, value); 
+2

Basierend unten auf Kommentare sind Kommas wichtig zu Ihnen. Diese Formatzeichenfolge fügt sie korrekt hinzu. Außerdem habe ich meine Antwort bearbeitet, um einen Link zu Standard-Zahlenformatzeichenfolgen für zukünftige Referenz bereitzustellen. – theChrisKent

1
string.Format({0:#,#0.0000}, decimalValue); 
1

Verwenden String.Format -

decimal d =123.47 
    string specifier="{0:0,0.0000}"; // You need to get specifier dynamically here.. 
    String.Format(specifier, d);  // "123.4700" 
+0

Ich brauche die Kommas für große Zahlen obwohl ... – Prabhu

+1

aktualisierte Antwort. – Vishal

+0

Kann ich eine Variable (anstelle von .0000) verwenden, wenn ich die Anzahl der Dezimalstellen dynamisch bestimmen möchte? – Prabhu

1

Try this:

string.Format("{0:#,###.0000}", 9.45600000); 

die Nullen Hinzufügen in dem Format ein Null zwingt ausgegeben zu werden, wenn es nicht eine Ziffer zu setzen ist.

Um die Nullen mit der Anzahl der Nullen programmatisch angetrieben addieren Sie dies tun könnte:

int x = 5; 
    string fmt = "{0:#,###." + new string('0', x) + "}"; 
    string.Format(fmt, 9.456000000); 
+0

Ist es möglich, eine Variable (anstelle von .0000) zu verwenden, wenn ich die Anzahl der Dezimalstellen dynamisch bestimmen wollte? – Prabhu

+2

@ theChrisKent's Antwort ist besser als meine. Ich hatte den Präzisionsbeschreiber vergessen. – wageoghe

Verwandte Themen