【问题标题】:decimal/money in formatted string格式化字符串中的小数/货币
【发布时间】:2013-11-11 08:31:08
【问题描述】:

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

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”

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

【问题讨论】:

    标签: c# decimal format-string


    【解决方案1】:

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

    使用

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

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

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

    【讨论】:

      【解决方案2】:

      好好读一读:

      Custom Numeric Format Strings

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

      【讨论】:

        【解决方案3】:

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

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

        确保您的本地化设置为您提供正确的货币符号和十进制字符,即一个点或一个逗号。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-14
          • 2011-05-18
          • 2012-03-08
          相关资源
          最近更新 更多