有没有什么方法可以指定标准或自定义数字格式字符串来始终输出符号,无论是+ ve还是-ve(尽管它应该为零做什么,我不确定!)
答案 0 :(得分:264)
是的,你可以。 有条件格式。见Conditional formatting in MSDN
例如:
string MyString = number.ToString("+0;-#");
每个以分号分隔的部分表示正数和负数
或:
string MyString = number.ToString("+#;-#;0");
如果您不希望零点有加号。
答案 1 :(得分:53)
注意,使用条件格式时,负值不会自动获得符号。你需要做
string MyString = number.ToString("+#;-#;0");
答案 2 :(得分: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}";
答案 3 :(得分: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
答案 4 :(得分:0)
对于任何类型的数值表达式:
+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0
对于三种情况使用三个部分:正面;负面;零
示例的其他方面:
零未签名。您可以将其显示为任何内容,例如“零”。
小于1的绝对值在小数点前有一个前导0。调整味道。
位数是最大和最小绝对十进制值。调整味道。
小数点字符是特定于文化的。 .NET替代品。
分组分隔符是可选的。角色是特定于文化的。 .NET替代品。 (这些位置也是特定于文化的,但只受格式字符串的控制。)除了格式的特殊字符(包括,#0)外,您还可以使用任何其他字符。
答案 5 :(得分:0)
我无法发表评论,所以我在这里回答(坚果信誉系统....)
您可以很好地使用number.ToString(“ + 0;-#”)来生成UTC字符串TimeFormat
在PowerShell代码中显示
"$([System.DateTime]::Now.ToString('HH:mm:ss.fff'))$($([System.TimeZoneInfo]::Local.GetUtcOffset([System.DateTime]::Now).TotalMinutes.ToString('+0;-#')))"