C# .NET:十进制到四舍五入字符串

C# .NET:十进制到四舍五入字符串,c#,.net,math,rounding,C#,.net,Math,Rounding,如果我有一个十进制数,如何得到一个带两位小数的字符串版本?这不起作用: Math.Round(myDecimal, 2).ToString("{0.00}"); 不要使用花括号,它们用于使用string.Format将格式化值嵌入较长的字符串中。使用以下命令: myDecimal.ToString("0.00"); 也许我错了,但我试过myDecimal.ToString()成功了。假设myDecimal是一个System.Decimal,然后Math.Round(myDecimal,2.T

如果我有一个
十进制数
,如何得到一个带两位小数的字符串版本?这不起作用:

Math.Round(myDecimal, 2).ToString("{0.00}");

不要使用花括号,它们用于使用
string.Format
将格式化值嵌入较长的字符串中。使用以下命令:

myDecimal.ToString("0.00");

也许我错了,但我试过
myDecimal.ToString()成功了。

假设
myDecimal
是一个
System.Decimal
,然后
Math.Round(myDecimal,2.ToString()
将显示精度的两个十进制数字,如您所需,不带任何格式字符串(除非您的数字的绝对值大于10^27-1)。这是因为
decimal
数据类型保留了数字的全部精度。也就是说,
1m
1.0m
1.00m
的存储方式和显示方式都不同

请注意,
float
double
的情况并非如此
1f
1.0f
1.00f
的存储和显示方式与
1d
1.0d
1.00d
相同


由于格式字符串必须在运行时进行解析,因此在大多数情况下,我可能会对类似这样的代码忽略它。

请注意,格式字符串
“{0.00}”
string.format
也不起作用;您必须在那里使用
“{0:0.00}”
。+1:与
float
double
不同,
decimal
数据类型将保留精度的位数,因此
Math.Round(myDecimal,2.ToString()应该可以正常工作。不需要格式字符串。