C# 将小数格式设置为两位或整数

C# 将小数格式设置为两位或整数,c#,.net,string,formatting,C#,.net,String,Formatting,10英镑我要10英镑,不是10英镑 10.11我要10.11 这在没有代码的情况下是可能的吗?i、 e.通过单独指定一个格式字符串 {0:N2}在我看来,十进制精度是十进制类型固有的,默认为4位小数。如果我使用以下代码: decimal value = 8.3475M; Console.WriteLine(value); decimal newValue = decimal.Round(value, 2); Console.WriteLine(newValue); 输出为: 8.3475 8.

10英镑我要10英镑,不是10英镑 10.11我要10.11

这在没有代码的情况下是可能的吗?i、 e.通过单独指定一个格式字符串
{0:N2}

在我看来,十进制精度是十进制类型固有的,默认为4位小数。如果我使用以下代码:

decimal value = 8.3475M;
Console.WriteLine(value);
decimal newValue = decimal.Round(value, 2);
Console.WriteLine(newValue);
输出为:

8.3475
8.35

这可以通过使用CultureInfo实现。使用下面的using语句导入库

using System.Globalization;
对于十进制转换,##可用于可选小数位数,00可用于强制小数位数。检查以下示例

double d1 = 12.12;
Console.WriteLine("Double :" + d1.ToString("#,##0.##", new CultureInfo("en-US")));

String str= "12.09";
Console.WriteLine("String :" + Convert.ToDouble(str).ToString("#,##0.00", new CultureInfo("en-US")));

String str2 = "12.10";
Console.WriteLine("String2 with ## :" + Convert.ToDouble(str2).ToString("#,##0.##", new CultureInfo("en-US")));
Console.WriteLine("String2 with 00 :" + Convert.ToDouble(str2).ToString("#,##0.00", new CultureInfo("en-US")));


int integ = 2;
Console.WriteLine("Integer :" + Convert.ToDouble(integ).ToString("#,##0.00", new CultureInfo("en-US")));
结果如下

Double :12.12
String :12.09
String2 with ## :12.1
String2 with 00 :12.10
Integer :2.00

这不起作用-十进制数=10.1;我能想到的最好的方法是:num.ToString(“C”).Replace(“.00”,即“);任何对这个案子有答案的人都会帮助我@戴夫-什么不起作用?是不是你想要正好两个小数,除非它们是零?@Dave-那
num%1==0呢?num.ToString(“0”):num.ToString(“0.00”)您可以在decimal.Console.WriteLine(num.ToString(“0.00”))上将其实现为扩展方法;即使该值为零,也强制2 DP。i、 .e“0.00”或“0.10”等。别忘了默认行为是从.005向上取整,而不是向下取整。@dotNETNinja这正是Dave所要求的。回想起来,我可能会做
decimal.Truncate(num)=num
,而不是mod by 1我的建议是:@Andrew如果有更好的答案,旧问题可以是新问题的重复@兰盖兹,谢谢你!当标记时,它只是说“这个问题以前被问过,并且已经有了答案”。我同意另一个线程比这个线程更完整。:)
Double :12.12
String :12.09
String2 with ## :12.1
String2 with 00 :12.10
Integer :2.00