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