C# 货币格式
我对某些字符串格式有问题,我在格式化特定格式时强制使用区域性:C# 货币格式,c#,.net,globalization,C#,.net,Globalization,我对某些字符串格式有问题,我在格式化特定格式时强制使用区域性: get { return String.Format("{0:###,###,###,###,##0}", Convert.ToDecimal(_monthPay, new System.Globalization.CultureInfo("es-ES"))); } 这样我就可以得到这个: $300000,01 在localhost上,它可以正常工作,但当我发布到服务器时,我得到以下结果: 300000.01美元 我不知道为什么!
get { return String.Format("{0:###,###,###,###,##0}", Convert.ToDecimal(_monthPay, new System.Globalization.CultureInfo("es-ES"))); }
这样我就可以得到这个:
$300000,01
在localhost上,它可以正常工作,但当我发布到服务器时,我得到以下结果:
300000.01美元
我不知道为什么!!!我没有访问服务器的权限,因此无法更改服务器上的区域设置;还有别的办法解决吗?这样我就可以在本地主机上正常工作,并且在发布时可以正常工作
谢谢。不用很长的自定义格式,货币的内置格式怎么样
get { return Convert.ToDecimal(_monthPay).ToString("C", new System.Globalization.CultureInfo("es-ES")); }
编辑:已移动区域性信息。。我仍然不认为使用大量格式字符串是正确的。货币有内置的格式约定…不用很长的自定义格式,货币的内置格式呢
get { return Convert.ToDecimal(_monthPay).ToString("C", new System.Globalization.CultureInfo("es-ES")); }
Thread.CurrentUICulture = CultureInfo.GetCultureInfo("es-ES");
编辑:已移动区域性信息。。我仍然不认为使用大量格式字符串是正确的。货币有内置的格式约定
Thread.CurrentUICulture = CultureInfo.GetCultureInfo("es-ES");
试着把它放在一些初始化块中
尝试将其放入一些初始化块。您将文化信息传递到了错误的位置
通过将CultureInfo传递给Convert.ToDecimal,您告诉Convert.ToDecimal使用该区域性转换数字。如果_monthPay是一个字符串,需要对其进行解析,则这是相关的
但是,您没有将CultureInfo传递给String.Format,因此它仍然使用默认区域性
顺便说一下,如果要组合多个值,则只应使用String.Format。在您的情况下,应该调用ToString重载。此外,格式字符串不必要地长;你可以简单地写,0。如果您想包含货币符号,只需使用C即可
因此,您应该编写Convert.ToDecimal\u monthPay.ToString,0,new System.Globalization.CultureInfo。您在错误的位置传递了CultureInfo
通过将CultureInfo传递给Convert.ToDecimal,您告诉Convert.ToDecimal使用该区域性转换数字。如果_monthPay是一个字符串,需要对其进行解析,则这是相关的
但是,您没有将CultureInfo传递给String.Format,因此它仍然使用默认区域性
顺便说一下,如果要组合多个值,则只应使用String.Format。在您的情况下,应该调用ToString重载。此外,格式字符串不必要地长;你可以简单地写,0。如果您想包含货币符号,只需使用C即可
因此,您应该编写Convert.ToDecimal\u monthPay.ToString,0,new System.Globalization.cultureinfo。这里要做的是告诉Convert.ToDecimal函数\u monthPay的样子。您所期望的是字符串将使用区域性信息进行格式化 您应该告诉字符串。设置要使用的区域性格式:
String.Format( new System.Globalization.CultureInfo("es-ES"), "{0:###,###,###,###,##0.##}", Convert.ToDecimal(_monthPay)));
这里要做的是告诉Convert.ToDecimal函数monthPay的样子。您所期望的是字符串将使用区域性信息进行格式化 您应该告诉字符串。设置要使用的区域性格式:
String.Format( new System.Globalization.CultureInfo("es-ES"), "{0:###,###,###,###,##0.##}", Convert.ToDecimal(_monthPay)));
什么服务器?什么语言?问题似乎不完整。您应该将其标记为C,以引起听众的注意,使其能够最好地回答问题。这与货币有何关系?您当前的格式字符串也将截断小数。您需要添加…0。或者…0.00结束,以避免丢失这些数字。什么服务器?什么语言?问题似乎不完整。您应该将其标记为C,以引起听众的注意,使其能够最好地回答问题。这与货币有何关系?您当前的格式字符串也将截断小数。您需要添加…0。或者…0.00结尾,以避免删除这些数字。您还可以将CultureInfo作为第一个参数传递给String.Format:String.Formatnew CultureInfo,{0:,,,0},valueYes,但他首先不应该使用String.Format。老实说,他也不需要庞大的格式字符串。他可以用一个C替换它来获得货币格式。他似乎不需要货币符号。你也可以将CultureInfo作为第一个参数传递给String。format:String.Formatnew CultureInfo,{0:,,,0},valueYes,但他首先不应该使用String.format。老实说,他也不需要庞大的格式字符串。他可以用一个C来代替它来获得货币格式,他似乎不想要货币符号。