210

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

4

6 回答 6

327

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

例如:

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

其中以分号分隔的每个部分代表正数和负数

或者:

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

如果您不希望零带有加号。

于 2008-12-07T22:40:09.210 回答
56

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

string MyString = number.ToString("+#;-#;0");
于 2009-02-17T13:46:03.667 回答
41

您还可以在 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}";
于 2013-06-24T11:56:17.393 回答
12

与其他答案相反,如果您想获得 +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
于 2015-08-13T12:42:12.800 回答
1

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

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

三种情况使用三个部分:正;负;零

示例的其他方面:

  • 零没有签名。您可以将其显示为任何内容,例如“零”。

  • 小于 1 的绝对值在小数点前以 0 开头。调整口味。

  • 位数是最大和最小的绝对十进制值。调整口味。

  • 小数点字符是特定于文化的。.NET 替代品。

  • 分组分隔符是可选的。这个角色是特定于文化的。.NET 替代品。(位置也是特定于文化的,但这仅由您的格式字符串控制。)您还可以使用除 Format 的特殊字符(包括 , . # 0)之外的任何其他字符。

于 2018-05-25T08:08:51.083 回答
0

我无法发表评论,所以我在这里做一个答案(坚果声誉系统....)

您可以很好地使用 number.ToString("+0;-#") 来生成 UTC String TimeFormat

这里显示在 PowerShell 代码中

"$([System.DateTime]::Now.ToString('HH:mm:ss.fff'))$($([System.TimeZoneInfo]::Local.GetUtcOffset([System.DateTime]::Now).TotalMinutes.ToString('+0;-#')))"

谢谢@gcores https://stackoverflow.com/users/40256/gcores

于 2019-09-26T07:20:28.387 回答