格式化字符串中的十进制/金钱

时间:2013-11-11 08:31:09

标签: c# decimal format-string

我无法在自定义格式化字符串

中格式化十进制
0.656 => 0.67; 
23.656 => 23.67;
5105.54 => 5 105.54;
1234567,89 => 1 234 567,89

我发现了几个帖子:

c# - Using String Format to show decimal upto 2 places or simple integer

c# - Converting Decimal to string with non-default format

但是当试图使用它们时会出现几个问题

例如: 价值

0.656我得到“.656”或“.66”

23.656 => “23.656”或“23.66”

有人推荐我可以找到格式字符串规则的链接吗?

3 个答案:

答案 0 :(得分:1)

我认为您实际上并不想将0.656转换为0.67,因为这是错误的。我想你的意思是它应该显示为0.66

使用

YourNumber.ToString("0.##");

如果你真的想要空格(我认为这也是错误的):

YourNumber.ToString("#,##0.##").Replace("."," ")

答案 1 :(得分:1)

好好阅读:

Custom Numeric Format Strings

您可以使用String.FormatToString() overloades来实现目标。

答案 2 :(得分:0)

如果要将数字格式化为货币值,请使用此

var d = 0.656;
Console.WriteLine("{0:C}", d); // prints "€ 0,66", in my case

确保您的本地化设置为您提供正确的货币符号和小数字符,I.E。点或逗号。