2013-09-27 5 views
-8

У меня есть следующий код для вычисления процента в perst, но когда я запускаю этот код, я всегда получаю o как значение в perst для всех значений qxount и acount.Ошибка C# при делении двух целых чисел

int perst; 
int qcount; 
int acount; 

perst = (acount/qcount) * 100; 
+2

Вы не можете делить на ноль. –

+0

Умножьте счет на 100, прежде чем делить его, это просто целочисленная проблема руления – AlexH

+2

Чтобы развернуть, эти переменные не были инициализированы и имеют значение по умолчанию 0. – MikeTheLiar

ответ

3

При делении целых чисел результат будет целым. Это означает, что вы ожидаете такого значения, как 0,75 (что кажется, вы думаете, что умножитесь на 100, чтобы получить процент), тогда возвращаемое целочисленное значение будет только 0, которое является ведущим целым числом. Остальная часть будет доступна с оператором% модуля.

Однако, получите процент, как вы, кажется, хотите, вам нужно разделить, используя значения double или float.

double perst; 
double qcount; 
double acount; 

perst = (acount/qcount) * 100; 

В статье MSDN от оператора деления - Good idea to read.

+1

У него есть несколько проблем с сообщением/кодом, который необходимо решить, прежде чем он доберется до этого момента. – Servy

+0

@Servy: Согласен, но мое предположение состоит в том, что он просто исключил некоторые детали реализации, которые можно экстраполировать. Читая его вопрос, мое мышление заставляет меня думать, что ОП имеет фундаментальное непонимание того, как работают целые числа. Мой ответ написан с учетом этого. Возможно, я должен добавить ссылку на хороший документ с этим обучением. –

+1

Независимо от того, что лучше помочь ОР исправить вопрос в одно из достаточного качества, которое вам не нужно *, чтобы угадать, в чем проблема, особенно когда есть несколько вероятных кандидатов. – Servy

0

Я думаю, что у вас есть целые проблемы округления. Попробуйте что-то вроде этого.

int perst; 
int qcount = 100; 
int acount = 5; 

perst = Convert.ToInt32(((double)acount/(double)qcount) * 100); 
0

Хотя округление почти наверняка ошибка (после присвоения значений переменных) следующие работ просто отлично:

int a = 62; 
int b = 235; 
int percentage = 100*a/b; 
Console.WriteLine(percentage); 

Вам не нужно использовать двойники. Это округляет процент к нулю. Если вам нужны более точные результаты, используйте двойной или одиночный.

+0

Точнее, этот процесс «полы» процент. '26.9%' все равно будет только «26%». –

Смежные вопросы