.NET字符串格式化 - 小数点左边的#是什么意思?

use*_*117 4 .net c# string-formatting

我需要将数字字符串格式化为小数点两边最多2个位置,即使这意味着截断或截断前导数字(这是一个很长的故事,不要问).在MSDN上,它意味着可以使用井号(#)完成:

""#"自定义格式说明符用作数字占位符符号.如果格式化的值在格式字符串中出现井号的位置有一个数字,则该数字将复制到结果字符串.否则,没有任何东西存储在结果字符串中的那个位置."

但在实践中,似乎只能在小数点右侧工作.如果我这样做:

String s = " Test - " + String.Format("format0 = {0:0.##}, format1 = {1:#.##}, format2 = {2:##.###}",321.2345, 321.2345, 321.2345);
Run Code Online (Sandbox Code Playgroud)

我得到s的这个输出:

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

...注意"0.##"和"#.##"产生相同的输出.那么当它位于小数点左侧时,"#" 究竟是什么意思呢?

p.s*_*w.g 5

为了解释您引用的文档,#使该位置的数字可选.如果该号码在该位置有一个重要数字,它将被打印; 否则它不会.

看看这个例子:

String.Format("{0:0.##}, {0:#.##}", 0.5)
Run Code Online (Sandbox Code Playgroud)

这将输出

0.5, .5
Run Code Online (Sandbox Code Playgroud)

或许是一个更明确的例子:

String.Format("{0:000.000}, {0:###.###}", 0.5)
Run Code Online (Sandbox Code Playgroud)

这将输出

000.500, .5
Run Code Online (Sandbox Code Playgroud)