在 Microsoft SQL 服务器 [C#] 上 Convert.ToDouble 时出现异常
Exception when Convert.ToDouble on Microsoft SQL Server [C#]
我有一个程序首先使用 MAX
语句从 SQL 服务器数据库中获取最大值。
它得到类似的东西:456.325
。我改变了“。”用“,”并删除每个白色 space。
我完全确定这个字符串可以转换为双精度数,因为它适用于我自己的笔记本电脑。
但是,当我 运行 服务器(2008 R2)上的软件时,它不起作用。我收到格式异常。我尝试了 Double.ParseTo
,但我也没有用。
代码:
string str = "";
double d = 0;
while (dataReader.Read())
{
str = String.Format("{0}", dataReader[0]);
}
str = str.Replace('.', ',');
str = str.Replace(" ", "");
try
{
d = System.Convert.ToDouble(str);
}
catch (Exception ex)
{
MessageBox.Show("Can't convert");
}
会不会是因为服务器上的 .NET 版本?
您的笔记本电脑和服务器的区域设置不同。
您必须指定文化 IFormatProvider 以获得一致的结果。
我有一个程序首先使用 MAX
语句从 SQL 服务器数据库中获取最大值。
它得到类似的东西:456.325
。我改变了“。”用“,”并删除每个白色 space。
我完全确定这个字符串可以转换为双精度数,因为它适用于我自己的笔记本电脑。
但是,当我 运行 服务器(2008 R2)上的软件时,它不起作用。我收到格式异常。我尝试了 Double.ParseTo
,但我也没有用。
代码:
string str = "";
double d = 0;
while (dataReader.Read())
{
str = String.Format("{0}", dataReader[0]);
}
str = str.Replace('.', ',');
str = str.Replace(" ", "");
try
{
d = System.Convert.ToDouble(str);
}
catch (Exception ex)
{
MessageBox.Show("Can't convert");
}
会不会是因为服务器上的 .NET 版本?
您的笔记本电脑和服务器的区域设置不同。
您必须指定文化 IFormatProvider 以获得一致的结果。