C# .NET字符串格式-小数点左侧的#表示什么意思?

C# .NET字符串格式-小数点左侧的#表示什么意思?,c#,.net,string-formatting,C#,.net,String Formatting,我需要将数字字符串的格式设置为小数点两侧最多2位,即使这意味着截断或切掉前导数字(说来话长,不问)。在MSDN上,这意味着可以使用磅符号(#)来完成: “#”自定义格式说明符用作数字占位符符号。 如果正在格式化的值在以下位置有一个数字: 磅符号出现在格式字符串中,该数字被复制到 结果字符串。否则,在中该位置不存储任何内容 结果字符串。“ 但实际上,这似乎只适用于小数点的右边。如果我这样做: String s = " Test - " + String.Format("format0 = {0:0

我需要将数字字符串的格式设置为小数点两侧最多2位,即使这意味着截断或切掉前导数字(说来话长,不问)。在MSDN上,这意味着可以使用磅符号(#)来完成:

“#”自定义格式说明符用作数字占位符符号。 如果正在格式化的值在以下位置有一个数字: 磅符号出现在格式字符串中,该数字被复制到 结果字符串。否则,在中该位置不存储任何内容 结果字符串。“

但实际上,这似乎只适用于小数点的右边。如果我这样做:

String s = " Test - " + String.Format("format0 = {0:0.##}, format1 = {1:#.##}, format2 = {2:##.###}",321.2345, 321.2345, 321.2345);
我得到了s的输出:

测试-格式0=321.23,格式1=321.23,格式2=321.235

。。。请注意,“0.###”和“#.##”产生相同的输出。那么,当“#”位于小数点左侧时,它到底是什么意思呢

为了解释您所引用的,在
#
中,该位置的数字是可选的。如果该数字在该位置有有效数字,则将打印该数字;否则就不会

看看这个例子:

String.Format("{0:0.##}, {0:#.##}", 0.5)
这将输出

0.5, .5
000.500, .5
或者是一个更清楚的例子:

String.Format("{0:000.000}, {0:###.###}", 0.5)
这将输出

0.5, .5
000.500, .5
0.##
#。##
不会产生相同的输出

0m.ToString("0.##") // returns "0"

0m.ToString("#.##") // returns ""

0m.ToString("#.#0") // returns ".00"

在我的示例中,我的意思是它们产生相同的输出。但你的问题是“那么当“#”位于小数点左侧时,它到底意味着什么?”仅供参考,这种格式与C无关。这是.NETFramework字符串格式。感谢您的澄清。