Как я могу бросить двойку в Int? - PullRequest
3 голосов
/ 11 апреля 2011

У меня есть программа, которая использует формулу для расчета восстановления устройства (детали, замененные на кабельных коробках, которые были повреждены), деленное на общее количество единиц (кабели, которые прошли восстановление, но не заменяли какие-либо детали).Я посмотрел кастинг онлайн, и формат для него:

int valuetoconvert = Convert.ToInt32;

Я делаю это, но все равно получаю следующую ошибку:

Невозможно неявно преобразовать тип 'удвоить до межд.Существует явное преобразование (вам не хватает приведения?)

Что я делаю не так?Может кто-нибудь, пожалуйста, помогите?Спасибо.

Вот мой код:

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 ]

5 голосов
/ 11 апреля 2011

Вы говорите, что хотите использовать int, но на самом деле вам нужно привести к удвоению. Вы можете сделать это так ( Пример кода ):

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

В противном случае вам нужно изменить Refurb_Rate с double на int.

2 голосов
/ 11 апреля 2011

Вы должны сказать, что хотите использовать int:

double a;
int b = (int) a;
0 голосов
/ 11 апреля 2011

Я не понимаю вашу ошибку, потому что Refurb_Rate - это двойное число, а все остальное - int.Тем не менее, я думаю, что вы действительно хотите это:

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

Или, возможно, вы хотите что-то вроде этого:

int Refurb_Rate = 0;
...
if (totalUnits != 0)
    Refurb_Rate = totalRefurb * 100 / totalUnits;
0 голосов
/ 11 апреля 2011

Попробуйте это:

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

Убедитесь, что int дважды, иначе 1/2 будет равно нулю.5

...