繁体   English   中英

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

[英].NET String formatting -What does the # mean to the left of the decimal point?

我需要将数字字符串格式化为小数点两边最多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

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

String.Format("{0:000.000}, {0:###.###}", 0.5)

这将输出

000.500, .5

0.###.##不产生相同的输出。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM