bar*_*ros 3 c# asp.net string decimal
我无法将查询字符串转换为十进制.在这个例子中,当我控制Request.QueryString["Amount"]值时,它是32.52在下面的代码工作之后,这样的Amount值是3252M.我怎么能轻松做到这一点?
decimal Amount= 0;
if (Request.QueryString["Amount"] != null)
Amount = Convert.ToDecimal(Request.QueryString["Amount"]);
Run Code Online (Sandbox Code Playgroud)
Convert.ToDecimal默认情况下使用您当前的文化设置.
我强烈怀疑你CurrentCulture的NumberDecimalSeparator财产不是.,但NumberGroupSeparator财产是.
这就是为什么你的程序认为这是千位分隔符,而不是小数分隔符,它解析为a 3252,而不是32.52.
作为解决方案,您可以使用其中有一个文化.的NumberDecimalSeparator像InvariantCulture,或者你可以.Clone你当前的文化,并设置它NumberDecimalSeparator到. 1
Amount = Convert.ToDecimal(Request.QueryString["Amount"], CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
要么
var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.NumberFormat.NumberDecimalSeparator = ".";
culture.NumberFormat.NumberGroupSeparator = ",";
Amount = Convert.ToDecimal("32.52", culture);
Run Code Online (Sandbox Code Playgroud)
1:如果您当前的文化千位分隔符.尚未存在.否则,您还需要更改它.对于任何文化,这两个属性都不能具有相同的值