是否有一个C#格式说明符,除非值为零,否则将省略前导零?

时间:2013-05-09 21:45:28

标签: c# string-formatting format-specifiers

换句话说,我希望0.123显示为“.123”,但0应显示为“0”。目前我得到的最好的是

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

给出0.123的“.123”,但是“”(空字符串)为0。

3 个答案:

答案 0 :(得分:9)

如果使用;作为分隔符,则可以指定正值,负值和零值的格式。 string.Format("{0:.###;-.###;0}", n)n==0会显示'0',并且正值和负值都会忽略前导零。检查MSDN参考here

答案 1 :(得分:4)

如果其他所有方法都失败了,你可以这样做:

 string s = n == 0 ? "0" : String.Format("{0:.###}", n);

并不精彩,但会完成工作: - )

答案 2 :(得分:0)

这是您可以尝试的内容我添加了一个位置,您可以在其中测试代码并将变量从0更改为.1234以测试

var decNum =.1234;//change to 0 will return 0 change to .1234 will return the correct formatted value

var formatDecil = String.Format("{0:.###}", decNum);
formatDecil = string.IsNullOrEmpty(formatDecil) ? 0.ToString():formatDecil;