2016-04-19 8 views
-3

Im Verwenden Sie den folgenden Code, um die Dezimalstelle auf 2 Dezimalstellen zu runden.Rundung und Formatierung der Nullwert-Dezimalstelle in C#

decimal? RTime = RTime.HasValue ? Decimal.Round(RTime.Value, 2) : 0; 

Aber die Konvertierung von Nummer 512-> 512.00 funktioniert nicht .. Wie mache ich das?

+1

"512-> 512.00 funktioniert nicht" Was bedeutet das? Was bekommst du als Ergebnis? – HimBromBeere

+0

Möchten Sie es als 512,00 drucken? Wenn ja, werfen Sie einen Blick auf http://www.dotnetperls.com/format – Carra

+0

Rundung und Formatierung sind verschiedene Schritte. Beim Runden von 512 auf 2 Dezimalstellen bleibt es 512, aber was Sie wollen, ist ** ein formatierter Wert für 512 zu drucken. Außerdem können Sie 'RTim' nicht deklarieren und seinen Wert in derselben Anweisung verwenden. Vielleicht hast du etwas wie "Dezimal"? rtime = RTime.HasValue? Decimal.Round (RTime.Value, 2): 0; '(notice case of' time'). In diesem Fall muss 'rtime' kein' Nullable' sein, sondern eine einfache 'dezimal'. – HimBromBeere

Antwort

2

Decimal.RoundRunden der Wert der Dezimalstelle. Zum Beispiel 512.123 bis 512.12.

Was Sie wollen, ist eine String-Darstellung. Sie müssen Format den Wert anstelle von Rundung. Sie können ToString() dafür verwenden:

decimal? RTime = RTime.HasValue ? Decimal.Round(RTime.Value, 2) : 0; 
string RTimeAsString = RTime.Value.ToString("0.00"); 

oder string.Format oder String-Interpolation wie folgt aus:

string RTimeAsString = string.Format("{0:0.00}", RTime); 
string RTimeAsString = $"{RTime:0.00}" 
2

Ich glaube, Sie Runden und Formatierung sind verwirrend.

  • Was Sie tun, ist Rundung und es funktioniert.
  • Was Sie erwarten, ist Formatierung, dh. wie es auf dem Bildschirm angezeigt wird. Dazu sollten Sie die .ToString() -Methode mit einem entsprechenden Format verwenden.