如何获得小数结果

时间:2013-12-21 19:20:22

标签: c# asp.net

我希望得到像小数点那样的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();
    } 

3 个答案:

答案 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