我在将 int 值转换为 double 值时遇到问题。我知道我必须施放它们,而且我正在努力做到这一点;但是 C# 仍然给我一个将 int 转换为 double 的错误,并说我需要一个转换。此外,它还给我一个错误,试图获取值下的 totalunits 值。它说:“**不能在此范围内声明名为“values”的局部变量,因为它会给“values”赋予不同的含义,而“values”已在父范围或当前范围中用于表示某些否则。我对这个错误感到困惑,因为我也希望 totalunits 更改值。somweone 可以帮助我吗?谢谢。
贾斯汀
这是我的一些代码:
//Get the Refurb_Rate for the day
private double GetRefurbRate()
{
string sql = "";
double Refurb_Rate = 0;
int totalRefurb = 0;
int totalUnits = 0;
string error_msg = "";
//Getting the value for sql for totalRefurb
sql = "SELECT COUNT(distinct rp.repair_ord) " +
"FROM " + schema + ".repair_part rp " +
"WHERE rp.repair_type = 'REFURB' and rp.created_date > '" + DateTime.Now.ToString("d-MMM-yyyy") + "' ";
while (true)
{
if (!myDb.RunSql(sql, true))
{
error_msg = "DBError for getting Refurb Rate";
break;
}
if (myDb.dbRdr.HasRows)
{
if (myDb.dbRdr.Read())
{
object[] values = new object[myDb.dbRdr.FieldCount];
myDb.dbRdr.GetValues(values);
Console.WriteLine(values[0].ToString());
totalRefurb = Convert.ToDouble(values[0].ToString());());// This is where convert to double error comes in.
//Getting the value from sql for totalUnits
sql = "SELECT count(distinct rp.repair_ord) " +
"FROM " + schema + ".repair_part rp " +
"WHERE rp.repair_type = 'REFURB' and rp.ref_desig is null and rp.created_date > '" + DateTime.Now.ToString("d-MMM-yyyy") + "' ";
while (true)
{
if (!myDb.RunSql(sql, true))
{
error_msg = "DBError for getting Refurb Rate";
break;
}
if (myDb.dbRdr.HasRows)
{
if (myDb.dbRdr.Read())
{
// This is where the values error comes in
object[] values = new object[myDb.dbRdr.FieldCount];
myDb.dbRdr.GetValues(values);
Console.WriteLine(values[1].ToString());
totalUnits = Convert.ToDouble(values[1].ToString());// This is where convert to double error comes in.
try
{
//Formula for Refurb Rate
Refurb_Rate = totalRefurb / totalUnits * 100;
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
break;
}
myDb.dbRdr.Close();
if (error_msg != String.Empty)
{
MessageBox.Show(error_msg, "Get Refurb Rate",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
return Refurb_Rate;
}
}
}
}
最佳答案
改变第二个object[] values = new object[myDb.dbRdr.FieldCount];
values = new object[myDb.dbRdr.FieldCount];
或 object[] values2 = new object[myDb.dbRdr.FieldCount];
第一个如果你想替换values
的内容,第二个如果你想声明一个自变量..
关于c# - 如何将 int 转换为 double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5654360/