【问题标题】:numeric format strings #,#0.00 vs #,0.00数字格式字符串 #,#0.00 与 #,0.00
【发布时间】:2020-10-23 10:17:50
【问题描述】:

我试图弄清楚这些numeric string formatters 的基础知识。所以我想我了解基础知识,但有一件事我不确定

所以,例如

#,##0.00

事实证明,它产生与

相同的结果
#,#0.00

或

#,0.00
#,#########0.00

所以我的问题是,为什么人们经常使用#,##(我在谷歌上搜索时经常看到)

也许我错过了什么。

你可以自己试一试here,然后把下面的代码放在那个主函数里面

 double value = 1234.67890;
 Console.WriteLine(value.ToString("#,0.00"));
 Console.WriteLine(value.ToString("#,#0.00"));
 Console.WriteLine(value.ToString("#,##0.00"));
 Console.WriteLine(value.ToString("#,########0.00"));

【问题讨论】:

    标签: c# number-formatting


    【解决方案1】:

    可能是因为 Microsoft 在其文档中使用了相同的格式说明符,包括您链接的页面。找出原因并不难。 #,##0.00 更清楚地说明了程序员的意图:用逗号分隔的三位数字组。

    【讨论】:

      【解决方案2】:

      会发生什么?

      调用以下函数:

      public string ToString(string? format)
      {
          return Number.FormatDouble(m_value, format, NumberFormatInfo.CurrentInfo);
      }
      

      重要的是要意识到格式用于格式化字符串,但您的格式恰好给出相同的结果。

      示例:

      value.ToString("#,#")      // 1,235
      value.ToString("0,0")      // 1,235
      value.ToString("#")        // 1235
      value.ToString("0")        // 1235
      value.ToString("#.#"))     // 1234.7
      value.ToString("#.##")     // 1234.68
      value.ToString("#.###")    // 1234.679
      value.ToString("#.#####")  // 1234.6789
      value.ToString("#.######") // =  value.ToString("#.#######") = 1234.6789
      

      我们看到了

      • 无论您输入 #、0 还是任何其他数字都无关紧要
      • 一次出现意味着:任意大数
        double value = 123467890;
        Console.WriteLine(value.ToString("#")); // Prints the full number
      
      • 但是,, 和 . 对于 double 的处理方式不同
      • 在点或逗号之后,它只会显示提供的字符数量(或更少:如#.######)。

      在这一点上,很明显它与程序员的意图有关。如果要将数字显示为1,234.68 或1234.67890,则将其格式化为

      "#,###.##"   or "#,#.##"  // 1,234.68
      "####.#####" or "#.#####" // 1234.67890
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-28
        • 1970-01-01
        • 1970-01-01
        • 2020-02-22
        • 2011-06-07
        • 2017-10-25
        • 1970-01-01
        • 2019-11-20
        相关资源
        最近更新 更多