我要做的是在财务报告中显示数字,如下所示:
+ 5000
+ 176
- 10000
- 620230
所以我需要打印6位数字的数字,带有前导符号。
我尝试将前导符号与前导空格结合起来:String.Format("{0,7:+#;-#;+0}", value);
,但事实证明它给了我:
+5000
+176
-10000
-620230
无论如何使用String.Format来获取我想要的输出吗?
编辑:我知道我可以创建自己的格式函数来实现该结果,并且我确实使用了一个。我要求String.Format
好奇地询问它是否可以完成。
答案 0 :(得分:6)
你需要一些技巧来组合部分(符号和数字)。以下是它的完成方式:
string.Format("{0:+;-;+}{0,7:#;#;0}",someNumber);
{0,7:#;#;0}
将格式化数字,以便仅显示绝对值。第一部分{0:+;-;+}
只会根据值显示符号。为方便起见,您可以使用自己的方法来包装该行代码。
答案 1 :(得分:4)
这是一个返回格式化字符串的方法。这是非常自我解释的。
static string FormatFinancialNumber(int number) {
string sign = number < 0 ? "-" : "+"; // decide the sign
return sign + Math.Abs(number).ToString().PadLeft(7); // Make the number part 7 characters long
}
用法:
Console.WriteLine(FormatFinancialNumber(1));
Console.WriteLine(FormatFinancialNumber(-12));
Console.WriteLine(FormatFinancialNumber(123));
Console.WriteLine(FormatFinancialNumber(-1234));
Console.WriteLine(FormatFinancialNumber(12345));
输出:
+ 1
- 12
+ 123
- 1234
+ 12345