【问题标题】:Show Currency Symbol after values在值之后显示货币符号
【发布时间】:2011-03-11 12:15:05
【问题描述】:

我正在使用 CultureInfo 方法成功地将所有不同的货币格式化为正确的格式。

但在某些例外情况下,例如欧元和瑞典克朗货币,我需要能够在值之后添加它们。目前,我的 CultureInfo 正在以下列方式对其进行格式化:“SEK 1.00,00”需要为“1.00,00 SEK”时。

感谢任何帮助。

【问题讨论】:

    标签: c# .net asp.net string-formatting currency


    【解决方案1】:

    您只需更改文化的NumberFormatInfo.CurrencyPositivePatternNumberFormatInfo.CurrencyNegativePattern 属性。

    只需克隆原始文化:

    CultureInfo swedish = new CultureInfo("sv-SE");
    swedish = (CultureInfo)swedish.Clone();
    swedish.NumberFormat.CurrencyPositivePattern = 3;
    swedish.NumberFormat.CurrencyNegativePattern = 3;
    

    然后

    var value = 123.99M;
    var result = value.ToString("C", swedish);
    

    应该会给你想要的结果。这应该让你:

    123,99 克朗

    【讨论】:

    • 是的,行得通!谢谢亚历克斯。只是为了让我明白你做了什么。我只需要添加 CurrencyPositivePattern 和 CurrencyNegativePattern 方法将货币符号移动到末尾?
    • @R100:是的,但这些是NumberFormatInfo 类的属性(不是方法)。
    【解决方案2】:

    注意 CurrencyNegativePattern

    这段代码

    CultureInfo swedish = new CultureInfo("sv-SE");
    swedish = (CultureInfo)swedish.Clone();
    swedish.NumberFormat.CurrencyPositivePattern = 3;
    swedish.NumberFormat.CurrencyNegativePattern = 3;
    

    会给你

    134,99 克朗

    kr.134,99kr.-

    将 CurrencyNegativePattern 更改为 8

    swedish.NumberFormat.CurrencyNegativePattern = 8;
    

    会给你

    134,99 克朗

    -134,99 克朗

    更多信息https://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencynegativepattern(v=vs.110).aspx

    【讨论】:

      【解决方案3】:
      string.Format(CultureInfo.CurrentCulture, "{0:C}", moneyValue.DataAmount)
      

      【讨论】:

      • 如果这能解决问题,解释会是一个更好的答案
      猜你喜欢
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      相关资源
      最近更新 更多