Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设置签名货币的格式_C# - Fatal编程技术网

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,

我有下面的场景。十进制值需要显示为货币,但包括适当的货币符号和符号,因此:

  • -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, 
        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
    调用,但至少可读性更好。如果您不太可能更改货币,也可以缓存格式字符串。将答案告诉我自己感觉有点奇怪。全是你的。