C# c语言中可为空的十进制数的舍入和格式化#
我用下面的代码将小数点四舍五入到小数点后2位C# c语言中可为空的十进制数的舍入和格式化#,c#,format,rounding,C#,Format,Rounding,我用下面的代码将小数点四舍五入到小数点后2位 decimal? RTime = RTime.HasValue ? Decimal.Round(RTime.Value, 2) : 0; 但是像512->512.00这样的数字转换不起作用。我该怎么做?十进制。舍入对十进制的值进行舍入。例如512.123到512.12 您需要的是字符串表示。您需要设置值的格式,而不是四舍五入。您可以使用ToString()实现以下目的: decimal? RTime = RTime.HasValue ? Dec
decimal? RTime = RTime.HasValue ? Decimal.Round(RTime.Value, 2) : 0;
但是像512->512.00这样的数字转换不起作用。我该怎么做?
十进制。舍入
对十进制的值进行舍入。例如512.123
到512.12
您需要的是字符串表示。您需要设置值的格式,而不是四舍五入。您可以使用ToString()
实现以下目的:
decimal? RTime = RTime.HasValue ? Decimal.Round(RTime.Value, 2) : 0;
string RTimeAsString = RTime.Value.ToString("0.00");
或字符串。格式为或字符串插值,如下所示:
string RTimeAsString = string.Format("{0:0.00}", RTime);
string RTimeAsString = $"{RTime:0.00}"
我认为你混淆了舍入和格式
- 你所做的是舍入,它是有效的
- 你所期望的是格式化,即它在屏幕上的显示方式。为此,应使用具有相应格式的.ToString()方法
“512->512.00不工作”这是什么意思?结果是什么?是否将其打印为512.00?如果是这样,请看一下舍入和格式化是不同的步骤。当将512四舍五入到2位小数时,它将保持512,但是您需要打印512的格式化值。此外,您不能声明RTim
并在同一语句中使用其值。也许你喜欢十进制?rtime=rtime.HasValue?十进制四舍五入(RTime.Value,2):0代码>(注意rtime
的情况)。在这种情况下,rtime
不需要是一个Nullable
,而是一个简单的decimal
。奇怪的问题,但你知道512和512.00是同一个数字,对吗?