C#数字格式:前导加号AND空格

时间:2018-05-02 06:05:16

标签: c# number-formatting

我要做的是在财务报告中显示数字,如下所示:

+   5000
+    176
-  10000
- 620230

所以我需要打印6位数字的数字,带有前导符号。

我尝试将前导符号与前导空格结合起来:String.Format("{0,7:+#;-#;+0}", value);,但事实证明它给了我:

   +5000
    +176
  -10000
 -620230

无论如何使用String.Format来获取我想要的输出吗?

编辑:我知道我可以创建自己的格式函数来实现该结果,并且我确实使用了一个。我要求String.Format好奇地询问它是否可以完成。

2 个答案:

答案 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