自定义数字格式string始终显示标志

有什么办法可以指定一个标准或自定义的数字格式string来始终输出符号,不pipe它是+ ve还是-ve(尽pipe它应该为零做什么,我不确定!)

是的你可以。 有条件格式。 请参阅MSDN中的条件格式

例如:

string MyString = number.ToString("+0;-#"); 

每个由分号分隔的部分代表正数和负数

要么:

 string MyString = number.ToString("+#;-#;0"); 

如果你不想让零有一个加号。

请注意,使用条件格式时,负值不会自动获得符号。 你需要做的

 string MyString = number.ToString("+#;-#;0"); 

你也可以使用string.Format()中的格式化string。 格式string用冒号(':')与索引分开

 string MyString = string.Format("Default format {0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}.", number); 

对于数字= {+1,-1,0},这给出 –
默认格式1,强制符号+1,无符号为零+1。
默认格式-1,强制符号-1,没有符号为零-1。
默认格式0,强制符号+0,零符号无符号0。

与其他答案相反,如果您想获得+1,-1,+0(对于参数1,-1,0),则需要使用以下格式:

 String.Format("{0:+#;-#;+0}", 0)); // output: +0 

要么

 String.Format("{0:+0;-#}", 0)); // output: +0 

如果你只用+#;-#它只会显示+0 (不是+0 )。

“#”自定义说明符 (位于https://msdn.microsoft.com/en-us/library/0c899ak8.aspx

请注意,该说明符从不显示不是有效数字的零,即使零是string中唯一的数字。 只有当它显示的数字是有效数字时才会显示零。

另外请记住,如果你需要任何小数精度,你需要指定它是这样的:

 String.Format("{0:+0.##;-#.##}", 0)); // output: +0 

或者,如果你不想总是出现,就像这样:

 String.Format("{0:+0.00;-#.00}", 0)); // output: +0.00