如何将双精度转换为int?

时间:2011-04-11 17:23:27

标签: c# types casting double int

我有一个程序,它使用一个公式计算一个单位的翻新(更换在损坏的电缆箱上的部件)除以总单位(通过翻新的电缆箱,但没有更换任何部件)。我在网上查了一下,其格式是:

int valuetoconvert = Convert.ToInt32;

我正在这样做,但我仍然收到以下错误:

  

无法将类型'double隐式转换为int。存在显式转换(您是否错过了演员?)

我做错了什么?有人可以帮忙吗?谢谢。

以下是我的一些代码:

private int GetRefurbRate()
{
string sql = "";
double Refurb_Rate;
int totalRefurb = 0;
int totalUnits = 0;
string error_msg = "";


sql = "SELECT COUNT(rp.repair_ord) " +
"FROM " + schema + ".repair_part rp " +
"WHERE rp.repair_ord = '" + repair_ord + "' ";
while (true)
{
if (!myDb.RunSql(sql, true))
{
error_msg = "DBError for getting Refurb Rate";
break;
}
if (myDb.dbRdr.HasRows)
{
if (myDb.dbRdr.Read())
{
try //Try and Catch are here b/c I originally had everything ints, and and they just caught the 0 exception.
{

Refurb_Rate = Convert.ToInt32( totalRefurb / totalUnits * 100); //This is where I try to perform the cast.

}
catch (Exception e)
{
Console.WriteLine(e);
}

}

//int Refurb_Rate = Convert.ToInt32(Refurb_Rate);
}

break;
}
myDb.dbRdr.Close();

if (error_msg != String.Empty)
{
MessageBox.Show(error_msg, "Get Refurb Rate",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}

4 个答案:

答案 0 :(得分:5)

你说你想要一个int cast,但实际上你需要强制转换为double。你可以这样做(Example Code):

Refurb_Rate = (double)totalRefurb / (double)totalUnits * 100d;

否则,您需要将Refurb_Ratedouble更改为int

答案 1 :(得分:2)

你需要说你想要一个int cast:

double a;
int b = (int) a;

答案 2 :(得分:0)

试试这个:

Refurb_Rate =(int)((double)totalRefurb / totalUnits * 100);

确保将int加倍,否则1/2将等于零而不是.5

答案 3 :(得分:0)

我不明白你的错误,因为Refurb_Rate是一个双重而其他一切都是一个int。但是,我认为你真正想要的是:

if (totalUnits != 0)
    Refurb_Rate = totalRefurb * 100.0 / totalUnits;

或者你可能想要这样的东西:

int Refurb_Rate = 0;
...
if (totalUnits != 0)
    Refurb_Rate = totalRefurb * 100 / totalUnits;