【问题标题】:Currency format货币格式
【发布时间】:2009-12-28 16:18:46
【问题描述】:

我对某些字符串格式有疑问,我在格式化特定格式时强制使用文化:

get { return String.Format("{0:###,###,###,###,##0}", Convert.ToDecimal(_monthPay, new System.Globalization.CultureInfo("es-ES"))); }

这样我就可以得到这个:

$300.000,01

在本地主机上它工作正常,但是当我发布到服务器时,我得到了这个:

$300,000.01

不知道为什么!!!我无权访问服务器,因此无法更改服务器上的区域设置;还有其他方法可以解决吗?以便我在 localhost 和发布时正常工作?

谢谢。

【问题讨论】:

  • 什么服务器?什么语言?问题似乎不完整。
  • 你应该用 C# 标记它,以吸引最能回答它的观众的注意力。
  • 这与货币有什么关系?
  • 您当前的格式字符串也会截断您的小数。您需要在末尾添加 ...##0.## 或 ...##0.00 以免丢失这些数字。

标签: c# .net globalization


【解决方案1】:

你在错误的地方传递了CultureInfo

通过将CultureInfo 传递给Convert.ToDecimal,您是在告诉Convert.ToDecimal 使用该区域性转换数字。 (如果_monthPay 是一个字符串并且需要被解析,这就是相关的)
但是,您没有将CultureInfo 传递给String.Format,因此它仍然使用默认区域性。

顺便说一下,如果您要组合多个值,则应该只使用String.Format。在您的情况下,您应该调用 ToString 重载。此外,您的格式字符串是不必要的长;你可以简单地写#,0。如果要包含货币符号,只需使用 C 即可。

因此,你应该写Convert.ToDecimal(_monthPay).ToString("#,0", new System.Globalization.CultureInfo("es-ES"))

【讨论】:

  • 您也可以将CultureInfo 作为第一个参数传递给String.FormatString.Format(new CultureInfo("es-ES"), "{0:###,###,###,###,##0}", value)
  • 是的,但他一开始就不应该使用String.Format
  • 老实说,他也不需要巨大的格式字符串。他可以将其替换为单个“C”以获得货币格式。
  • 他(似乎)不想要货币符号。
【解决方案2】:

您在这里所做的是告诉 Convert.ToDecimal 函数 _monthPay 会是什么样子。您所期望的是字符串将使用文化信息进行格式化。

你应该告诉 String.Format 使用什么文化:

String.Format( new System.Globalization.CultureInfo("es-ES"), "{0:###,###,###,###,##0.##}", Convert.ToDecimal(_monthPay)));

【讨论】:

    【解决方案3】:
    Thread.CurrentUICulture = CultureInfo.GetCultureInfo("es-ES");
    

    试着把它放在一些初始化块中。

    【讨论】:

      【解决方案4】:
      get 
      { 
          var culture = new System.Globalization.CultureInfo("es-ES");
          return Convert
              .ToDecimal(_monthPay, culture)
              .ToString("###,###,###,###,##0", culture); 
      }
      

      【讨论】:

        【解决方案5】:

        与其使用很长的自定义格式,不如使用内置的货币格式?

        get { return Convert.ToDecimal(_monthPay).ToString("C", new System.Globalization.CultureInfo("es-ES")); }
        

        编辑:移动了文化信息。我仍然不认为使用一些大量的格式字符串是正确的。货币有内置的格式约定...

        【讨论】:

          猜你喜欢
          • 2015-10-24
          • 2012-01-22
          • 2014-01-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多