在 C# 中舍入和格式化可为空的小数

Rounding and formatting the nullable decimal in c#

我使用下面的代码将小数点四舍五入到小数点后两位。

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

但是转换数字如 512->512.00 不起作用..我该怎么做?

Decimal.Round 四舍五入小数的值。例如 512.123512.12.

您想要的是字符串表示。您需要 格式化 值而不是 舍入 。您可以为此使用 ToString()

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

string.Format或像这样的字符串插值:

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

我认为您混淆了舍入和格式设置。

  • 你正在做的是四舍五入并且它有效。
  • 您期望的是格式化,即。它在屏幕上的显示方式。为此,您应该使用具有相应格式的 .ToString() 方法。