C# 数字格式:前导加号和空格
C# number format: leading plus sign AND spaces
我想要做的是在财务报告中显示数字,如下所示:
+ 5000
+ 176
- 10000
- 620230
所以我需要打印出 6 位数字,带前导符号。
我尝试像这样将前导符号与前导空格结合起来:String.Format("{0,7:+#;-#;+0}", value);
,但结果是:
+5000
+176
-10000
-620230
有没有办法用String.Format得到我想要的输出?
编辑:我知道我可以制作自己的格式函数来实现该结果,我确实使用了一个。出于好奇,我问 String.Format
看看是否可以完成。
这是一个returns格式化字符串的方法。这是不言自明的。
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
您需要一些技巧来组合各个部分(符号和数字)。这是如何完成的:
string.Format("{0:+;-;+}{0,7:#;#;0}",someNumber);
{0,7:#;#;0}
将格式化数字,以便只显示绝对值。而第一部分 {0:+;-;+}
只会根据值显示符号。为了方便起见,您可以创建自己的方法来包装该行代码。
我想要做的是在财务报告中显示数字,如下所示:
+ 5000
+ 176
- 10000
- 620230
所以我需要打印出 6 位数字,带前导符号。
我尝试像这样将前导符号与前导空格结合起来:String.Format("{0,7:+#;-#;+0}", value);
,但结果是:
+5000
+176
-10000
-620230
有没有办法用String.Format得到我想要的输出?
编辑:我知道我可以制作自己的格式函数来实现该结果,我确实使用了一个。出于好奇,我问 String.Format
看看是否可以完成。
这是一个returns格式化字符串的方法。这是不言自明的。
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
您需要一些技巧来组合各个部分(符号和数字)。这是如何完成的:
string.Format("{0:+;-;+}{0,7:#;#;0}",someNumber);
{0,7:#;#;0}
将格式化数字,以便只显示绝对值。而第一部分 {0:+;-;+}
只会根据值显示符号。为了方便起见,您可以创建自己的方法来包装该行代码。