C# 如何设置签名货币的格式
我有下面的场景。十进制值需要显示为货币,但包括适当的货币符号和符号,因此:C# 如何设置签名货币的格式,c#,C#,我有下面的场景。十进制值需要显示为货币,但包括适当的货币符号和符号,因此: -45.23英镑显示为-45.23英镑 45.23显示为+45.23英镑 货币符号必须来自System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol。我有这个,但我找不到交换符号和货币符号的方法: string s1 = string.Format(@"{1}{0:+#,##0.00;-#,##0.00}", 45.09M,
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
我想:
+£45.09
-£45.09
更新
有人发布了另一个关于该房产的答案,这看起来很有希望,特别是因为微软忽视了该房产包含各种表示负号的选项的可能性。但是,
NumberFormatInfo.CurrencyPositivePattern
不包含包含正号的选项!该死感谢提到它的人,但删除了他们的评论。尽管如此,我还是学到了一些东西。当我发布这篇文章时,我意识到答案是分三步而不是两步:
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
+£45.09
-£45.09
当我发布这篇文章时,我意识到答案是分三步而不是两步:
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
+£45.09
-£45.09
您的
string.Format
明确地将+/-放在前面
如果将操作分为两个步骤,则会变得更容易。首先输入您的currentcy符号,然后格式化您的号码
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);
您的
string.Format
明确地将+/-放在前面
如果将操作分为两个步骤,则会变得更容易。首先输入您的currentcy符号,然后格式化您的号码
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);
我想在那里的某个地方有一个笑脸。我想在那里的某个地方有一个笑脸。我想要字符串。Format显式显示
+/-
。这就是你的意思吗?我真的很喜欢你的想法。我将其转换为扩展方法。两个string.Format
调用,但至少可读性更好。如果您不太可能更改货币,也可以缓存格式字符串。将答案告诉我自己感觉有点奇怪。所有的。我想要字符串。格式显式显示+/-
。这就是你的意思吗?我真的很喜欢你的想法。我将其转换为扩展方法。两个string.Format
调用,但至少可读性更好。如果您不太可能更改货币,也可以缓存格式字符串。将答案告诉我自己感觉有点奇怪。全是你的。