我有一些字符串格式的问题,我在格式化特定格式时强制文化:
get { return String.Format("{0:###,###,###,###,##0}", Convert.ToDecimal(_monthPay, new System.Globalization.CultureInfo("es-ES"))); }
这样我就可以得到这个:
300.000,01 美元
在本地主机上它工作正常,但是当我发布到服务器时,我得到这个:
300,000.01 美元
不知道为什么!!!我无权访问服务器,因此无法更改服务器上的区域设置;还有另一种解决方法吗?以便我在本地主机上和发布时正常工作?
谢谢。
最佳答案
您在错误的位置传递了 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"))
。
关于c# - 货币格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1970209/