货币格式

lid*_*min 1 .net c# globalization

我有一些字符串格式的问题,我在格式化特定格式时强迫文化:

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

所以我可以得到这个:

$ 300.000,01

在localhost它工作正常,但当我发布到服务器,我得到这个:

$ 300,000.01

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

谢谢.

SLa*_*aks 5

CultureInfo在错误的地方经过了.

通过传递CultureInfoConvert.ToDecimal你,你告诉你Convert.ToDecimal使用这种文化转换数字.(这是相关的,如果_monthPay是一个字符串,需要解析)
但是,你没有传递CultureInfoString.Format,所以它仍然使用默认文化.

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

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