我在iis上有一个网络服务。 service必须返回34.56字符串值。因为在我的本地服务中返回此值,但是当我在iis服务器上尝试此方法时,methot返回34560000。 这个问题的原因是什么?
public string GetTotal(string a, string b)
{
double total= 0;
List<BorcLite> bList = GetTotalList(a, b);
if (bList.Count == 0)
return total.ToString();
if (bList[0].resultCode != "0")
return bList[0].resultCode;
foreach (BorcLite record in bList)
{
total+= Convert.ToDouble(record.totalBill);
}
return total.ToString();
}
答案 0 :(得分:1)
Convert.ToDouble
使用当前的线程文化。
您可能在系统上使用不同的区域设置。
解决方案是通过调用以Convert.ToDouble
为参数的IFormatProvider
的重载来使用适当的文化:
string s = "34,56000";
double d = Convert.ToDouble(s); // my default US -> 3456000
d = Convert.ToDouble(s, CultureInfo.InvariantCulture); // -> 3456000
d = Convert.ToDouble(s, CultureInfo.GetCultureInfo("en-US")); // -> 3456000
d = Convert.ToDouble(s, CultureInfo.GetCultureInfo("de-DE")); // -> 34.56