Я пытаюсь использовать фона рабочего, который для каждой клавиши в словаре сохраняет содержимое в файл. ACon - это персональный класс, который вызывает функцию сохранения содержимого содержимого в нем.C# Background Worker divison
private void bwSaver_DoWork(object sender, DoWorkEventArgs e)
{
string[] Keys = ACon.GetKeys();
int num = 0;
foreach (string s in Keys)
{
ACon.Save(s);
int Len = Keys.Length;
double pctg = (num/Len);
//Below was by first attempt at getting the percentage. Above are my debugging attempts.
bwSaver.ReportProgress(num/Keys.Length*100);
num++;
}
}
Я надеялся, что для того, чтобы сообщить о достигнутом прогрессе, давая ключ он находится на/общие ключах * 100 для процента, но это не работает.
Независимо от того, какой тип я использую для pctg; short, int, float, double, num/Len always = 0, но если я его переключаю, Len/num дает правильное значение. Добавление или удаление скобок ничего не меняет. Я просто глупо и что-то пропущу, или я что-то неправильно кодирую?
Вот некоторые скриншоты из VS2010 (Professional)
pctg в два раза:
pctg, как поплавок:
pctg как двойной, без скобок:
pctg с Леном и NUM местами:
Это работает, но если это так, то почему при переключении Len/num получается результат без каста? – Ewan
Имеет ли len/num целое целое значение? Без каста вы выполняете целочисленное деление (если len и num - ints), поэтому вы округлите до ближайшего int. – paqogomez
О да ... Спасибо за это! – Ewan