自定义数字格式字符串始终显示符号

Cra*_*rer 176 .net c# formatting string-formatting

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

gco*_*res 282

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

例如:

string MyString = number.ToString("+0;-#");
Run Code Online (Sandbox Code Playgroud)

每个以分号分隔的部分表示正数和负数

要么:

string MyString = number.ToString("+#;-#;0");
Run Code Online (Sandbox Code Playgroud)

如果你不希望零有一个加号.

  • 使用`+#; - #`,对于值0我只得到"+",没有实际的0.对我来说我希望0显示为"+ 0",所以这样做:`+#; - #; + 0`. (4认同)
  • 谢谢!将其与`''`混合将做得很棒!看一下:`Changes.ToString(“'('#'▲)';'('#'▼)';''”)`!它节省了我很多时间,并节省了数百条“ if”语句!:) (2认同)
  • @Shahab我喜欢它。请注意,如果您不想显示带有控制符号的数字的数值,则... `string msg = $"今天股市为 {delta:▲;▼;~} .";`. (2认同)

Luk*_*Luk 54

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

string MyString = number.ToString("+#;-#;0");
Run Code Online (Sandbox Code Playgroud)

  • `+0; - #`将`0`格式化为`+ 0`而不是`0`. (4认同)

Edw*_*ard 27

您还可以在string.Format()中使用格式字符串; 格式字符串与冒号(':')的索引分开

var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);
Run Code Online (Sandbox Code Playgroud)

对于数字{+ 1,-1,0},这给出:

1,强制符号+1,没有符号表示零+1
-1,强制符号-1,无符号表示零-1
0,强制符号+0,无符号表示零0

您也可以使用插值字符串而不是string.Format获得相同的结果:

var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";
Run Code Online (Sandbox Code Playgroud)


Kam*_*zot 8

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

String.Format("{0:+#;-#;+0}", 0));  // output: +0
Run Code Online (Sandbox Code Playgroud)

要么

String.Format("{0:+0;-#}", 0));  // output: +0
Run Code Online (Sandbox Code Playgroud)

如果你只使用+#;-#它将只显示+(不+0)为0.

"#"自定义说明符(https://msdn.microsoft.com/en-us/library/0c899ak8.aspx)

请注意,即使零是字符串中的唯一数字,此说明符也不会显示不是有效数字的零.仅当它是显示的数字中的有效数字时,它才会显示零.

另请注意,如果您需要任何小数精度,您需要指定它:

String.Format("{0:+0.##;-#.##}", 0));  // output: +0
Run Code Online (Sandbox Code Playgroud)

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

String.Format("{0:+0.00;-#.00}", 0));  // output: +0.00
Run Code Online (Sandbox Code Playgroud)