【问题标题】:C# different syntax in formatting numbersC# 格式化数字的不同语法
【发布时间】:2013-03-27 20:50:11
【问题描述】:

我有一个关于在 C# 中格式化数字的简单问题。

我有这样的格式

{0:0.00######################}

这是this website建议的,基本上显示了一个数字的至少2位小数。

那么this website 建议了一个不同的格式字符串

0.00######################

现在,我了解到前者和后者在功能上存在差异。例如,我应该在 string.Format() 调用中使用前者,在 Decimal.ToString() 调用中使用后者。但我想知道的是花括号和

0:

有什么想法吗?

【问题讨论】:

  • 冒号是节分隔符。它允许您为正值、零值和负值指定不同的格式。有关所有详细信息,请参阅here
  • 为什么不使用MDSN作为参考点这里是一个很好的网站,有一些不同的数值格式msdn.microsoft.com/en-us/library/dwhawy9k.aspx

标签: c# number-formatting


【解决方案1】:

当您使用String.Format 时,您可以拥有多个将被格式化的“项目”。这是通过使用{n} 确定的,其中n 是值列表的索引:

var result = string.Format("Arg1 == {0}, Arg2 == {1}", arg1, arg2);

Decimal.ToString 和类似情况不需要这样做,因为只有一个值。

0: 实际上只是 {0}: 用于打破格式规范(: 之后的所有内容实际上与 ToString 方法使用的相同)。

【讨论】:

    【解决方案2】:

    当使用String.Format 时,花括号表示您正在放置要替换为字符串的参数。 0 表示它是第一个参数,因此例如考虑以下内容:

    Console.WriteLine(String.Format("{0} {1} {2}", "A", "B", "C"));
    

    将输出“A B C”。鉴于:

    Console.WriteLine(String.Format("{2} {0} {1}", "A", "B", "C"));
    

    会输出“C A B”。

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      花括号用作要替换为值的“符号”。花括号中的数字(基于 0 的索引)是指向该值的索引。

      例子:

      string.Format("{0:#,##0} {1:#,##0} {0:#,##0}", 2345, 6789);

      结果:

      2,345 6,789 2,345

      【讨论】:

        猜你喜欢
        • 2023-03-11
        • 2011-03-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多