C# 格式化数字的不同语法

Posted

技术标签:

【中文标题】C# 格式化数字的不同语法【英文标题】:C# different syntax in formatting numbers 【发布时间】: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 【参考方案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

【讨论】:

以上是关于C# 格式化数字的不同语法的主要内容,如果未能解决你的问题,请参考以下文章

C#如何将带有感叹号图标注释的文本格式的数字转换为数字格式的数字?

如何将 C++ 数字格式转换为 C# 数字格式?

C# 数字格式打印所有有效数字和分隔符

在 C# 中格式化十进制数

格式化c#文本框只允许数字字符[重复]

《C#零基础入门之百识百例》输出格式控制 -- 竖式计算