我无法将查询字符串转换为十进制。
在这个例子中,当我控制 Request.QueryString["Amount"]
值时,它是 32.52
下面的代码工作后, Amount
值就是这样的3252M。我怎样才能轻松做到这一点?
decimal Amount= 0;
if (Request.QueryString["Amount"] != null)
Amount = Convert.ToDecimal(Request.QueryString["Amount"]);
最佳答案
Convert.ToDecimal
默认使用您当前的文化设置。
我强烈怀疑你的CurrentCulture
的 NumberDecimalSeparator
property不是 .
,而是 NumberGroupSeparator
property是。
这就是为什么您的程序认为这是千位分隔符,而不是小数点分隔符,并且它解析为 3252
,而不是 32.52。
作为一种解决方案,您可以使用具有 .
的区域性作为 NumberDecimalSeparator
,例如 InvariantCulture
, 或者你可以 .Clone
您当前的区域性并将其 NumberDecimalSeparator
设置为 。
1
Amount = Convert.ToDecimal(Request.QueryString["Amount"], CultureInfo.InvariantCulture);
或
var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.NumberFormat.NumberDecimalSeparator = ".";
culture.NumberFormat.NumberGroupSeparator = ",";
Amount = Convert.ToDecimal("32.52", culture);
1: 如果您当前文化的千位分隔符不是.
。否则,您也需要更改它。对于任何文化,这两个属性都不能具有相同的值
关于c# - 将请求 QueryString 转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28069211/