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

问题描述 投票:168回答:5

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

c# .net formatting string-formatting
5个回答
264
投票

是的你可以。有条件格式。见Conditional formatting in MSDN

例如:

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

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

要么:

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

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


53
投票

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

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

25
投票

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

var f = string.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

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

var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";

8
投票

与其他答案相反,似乎如果你想获得+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.Format("{0:+0.##;-#.##}", 0));  // output: +0

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

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

0
投票

对于任何类型的数值表达式:

+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0

三种情况分为三个部分:正面;负面;零面

该示例的其他方面:

  • 零没有签名。您可以将其显示为任何内容,例如“零”。
  • 小于1的绝对值在小数点前有一个前导0。调整味道。
  • 位数是最大和最小绝对十进制值。调整味道。
  • 小数点字符是特定于文化的。 .NET替代品。
  • 分组分隔符是可选的。角色是特定于文化的。 .NET替代品。 (这些位置也是特定于文化的,但只能由您的格式字符串控制。)除了Format的特殊字符(包括,#0)之外,您还可以使用任何其他字符。
© www.soinside.com 2019 - 2024. All rights reserved.