我有以下情况。小数值需要显示为货币,但包括相应的货币符号和符号,因此:
货币符号必须来自System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
。我有这个,但我找不到交换标志和货币符号的方法:
string s1 = string.Format(@"{1}{0:+#,##0.00;-#,##0.00}", 45.09M,
System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
Console.WriteLine(s2);
string s2 = string.Format(@"{1}{0:+#,##0.00;-#,##0.00}", -45.09M,
System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
Console.WriteLine(s2);
输出:
£+45.09
£-45.09
我想:
+£45.09
-£45.09
有人发布了关于NumberFormatInfo.CurrencyPositivePattern
财产的另一个答案,这看起来很有希望,特别是因为但是微软似乎忽略了NumberFormatInfo.CurrencyNegativePattern
财产包含各种负面陈述选项的可能性。但是,NumberFormatInfo.CurrencyPositivePattern
不包含包含正号的选项!该死的。感谢无论是谁提到它,但删除了他们的评论。不过我学会了一个人。
答案 0 :(得分:3)
正如我发布的那样,我意识到答案是分三步而不是两步:
string s1 = string.Format(@"{0:+;-}{1}{0:#,##0.00;#,##0.00}", 45.09M, System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
Console.WriteLine(s1);
string s2 = string.Format(@"{0:+;-}{1}{0:#,##0.00;#,##0.00}", -45.09M, System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
Console.WriteLine(s2);
输出:
+£45.09
-£45.09
答案 1 :(得分:1)
您的string.Format
明确地将+/-放在前面。
如果将操作分为两个步骤,则会变得更容易。首先注入你的当前符号,然后格式化你的号码。
string fmt = string.Format(@"{{0:+{0}#,##0.00;-{0}#,##0.00}}",
System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
string s1 = string.Format(fmt, 45.09M);
Console.WriteLine(s1);
string s2 = string.Format(fmt, -45.09M);
Console.WriteLine(s2);