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# 格式化数字的不同语法的主要内容,如果未能解决你的问题,请参考以下文章