错误 1 无法将类型“string”转换为“double” 错误 2 无法将类型“string”隐式转换为“double”

2025-05-15 04:50:44
推荐回答(4个)
回答1:

string的比较结果和int的比较结果很可能是不一样的
建议把dr[1].ToStirng() 改为 Convert.ToInt32(dr[1].ToString())当然double也可以,不过书籍数量没有必要写成double,因为那一定是整数,而且实际数量也不会超过int的长度

错误1 dr[1].ToString()
错误2 Convert.ToDouble(dr[1]),你前面写(double)已经在进行强制转换了
jian声明为double型的,那么就不能进行 double + "-" + double 操作,这是string也就是字符串型的操作

回答2:

SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=123;database=图书馆");
conn.Open();
string sql = "select 书名,数量 from 图书";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if(string.IsNullOrgEmpty(dr[0].ToString()))
{
continue;
}
if (sm.Text == dr[0].ToString())
{
if (sl.Text <= dr[1].ToString)
{
Session["ss"] = dr[1].ToString();
double jian, jian1, jian2;
jian1 = Convert.ToDouble((double)dr[1]);
jian2 = Convert.ToDouble(sl.Text);
jian = jian1 - jian2;
string sql1 = "update 图书 set 数量=" + jian + " where 书名='" + sm.Text + "'";
SqlCommand cmd1 = new SqlCommand(sql1, conn);
if (cmd1.ExecuteNonQuery() > 0)
{
Response.Write("");
}
}
Response.Write("");
}
}
Response.Write("");
dr.Close();
conn.Close();

回答3:

单点调试下看看相应变量里的数据,看是不是能转换为double,另外的话,jian1 = Convert.ToDouble((double)dr[1]);改为jian1 = Convert.ToDouble(dr[1].ToString());

回答4:

错误1:if (sl.Text <= dr[1].ToString)
改为
dr[1].ToString()

jian = jian1 + "-" + jian2;
改为
jian=jian1-jian2;