【问题标题】:How do you specify an optional thousands separator in C#?如何在 C# 中指定可选的千位分隔符?
【发布时间】:2011-12-05 12:32:47
【问题描述】:

我正在尝试从 decimal 数据类型打印物理量,最多 6 位小数。我希望显示千位分隔符,但仅适用于 >= 10,000(或

例如:

  • 100 -> 100
  • 1000 -> 1000
  • 9999 -> 9999
  • 10000 -> 10,000

我一直在用这种格式,但是不太对:

myNumber.ToString("#,##0.######");

格式字符串是否有技巧让千位分隔符仅在小数点左侧有 5 位或更多位时才显示?

【问题讨论】:

    标签: c# format number-formatting


    【解决方案1】:

    我不认为有什么特别的技巧,你必须这样做

    var result = myNumber >= 10000.0m || myNumber <= -10000.0m ? 
                     myNumber.ToString("#,##0.######") : 
                     myNumber.ToString("###0.######");
    

    【讨论】:

    • 谢谢。我认为你的“d”应该是“m”。
    • @ScottWhitlock 你是对的。出于某种原因,我认为你 myNumber 是双重的。
    【解决方案2】:

    我不相信有任何“内置”的东西,但这是 Iformatprovider 和 ICustomFormatter 设计的那种情况。见iformatprovider

    【讨论】:

      【解决方案3】:

      您可以使用 myNumber.ToString("n") ,它应该适当地使用当前的文化和格式

      【讨论】:

      • 抱歉,我刚刚注意到您只希望它申请超过 10,000 的号码。这背后的原因是什么?只是好奇
      • 我不确定它来自哪里,可能是味道,但对结果的要求是:1000 或 10,000。他们不想看到 1000 个。
      • 有趣。为方便起见,将创建一个使用 Bala R 逻辑的扩展
      • 是的,这就是我必须做的。
      • @AnthonyShaw:这是很常见的格式,fe。在书中,我只是在阅读 Windows 并发,它们正在格式化数字:5000 但 50 000。(不同的分隔符,但相同的规则):)。
      猜你喜欢
      • 1970-01-01
      • 2011-12-06
      • 2017-02-07
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多