Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c语言中可为空的十进制数的舍入和格式化#_C#_Format_Rounding - Fatal编程技术网

C# c语言中可为空的十进制数的舍入和格式化#

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

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

  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是同一个数字,对吗?