我希望得到像小数点那样的30.769,但在这种情况下我只得到30。我试图改变我的int myVar以使myVar加倍,但是出错了。我做了一些研究,但到目前为止还没能做到。我知道我在这里做了一些改变:
int myVar= (int)ttl_Res.ExecuteScalar();
也在这里:
COUNT(DDL_ANS)*100/@myVar
但这是我目前的代码:
if (TYPE.SelectedValue == "sometype")
{
con.Open();
int myVar= (int)ttl_Res.ExecuteScalar();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Update SETS set SCORE = x.Result from (select ID, Type, COUNT(DDL_ANS)*100/@myVar AS Result from JATG) as x where ID = 1211";
cmd.Parameters.Add("@myVar", SqlDbType.VarChar).Value = myVar;
cmd.Connection = con;
//con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
答案 0 :(得分:2)
COUNT(DDL_ANS)*100/@myVar
返回int
的原因是因为所有三个操作数(COUNT(DDL_ANS)
,100
和@myVar
)都是int
。要获得decimal
结果,将一个操作数强制转换为decimal
就足够了,例如COUNT(DDL_ANS)*CONVERT(DECIMAL,100)/@myVar
。
答案 1 :(得分:0)
您可以使用Convert.ToDouble将其显式转换为double。错误可能是因为溢出,但它取决于整数是什么。
答案 2 :(得分:0)
您必须改为使用Decimal
。
var myVar= (Decimal) ttl_Res.ExecuteScalar(); // Assuming your first column in the first row your query contains a value with decimal points