如何获取十进制结果



我希望得到像 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();
    } 

COUNT(DDL_ANS)*100/@myVar 返回int的原因是因为所有三个操作数(COUNT(DDL_ANS)100@myVar)都是int。要得到一个decimal的结果,将一个操作数转换为decimal就足够了,例如COUNT(DDL_ANS)*CONVERT(DECIMAL,100)/@myVar

您可以使用

Convert.ToDouble将其显式转换为双精度。错误可能是由于溢出,但这取决于整数是什么。

您必须改用Decimal

var myVar= (Decimal) ttl_Res.ExecuteScalar(); // Assuming your first column in the first row your query contains a value with decimal points

最新更新