2014-12-17 2 views
0

Я пытаюсь вычислить процент для первого урожая прохода, но разрыв не работает и возвращается нулевойРасчет не работает в C#

double FirstPassYield = ((RowTotal - DefectCount)/RowTotal) * 100; 

Я пытался индивидуальные расчеты, и они работают только при использовании разрыва. Я даже взял случайные числа и разделить их и до сих пор получить 0. Я не верный способ деления держит возвращая 0

+0

Являются ли какие-либо из переменных типа 'int' случайным? Попробуйте использовать поиск. «Расчет не работает» не является надлежащим описанием проблемы и не даст никаких результатов, попробуйте «деление возвращает ноль». – CodeCaster

+1

Также: http://stackoverflow.com/questions/661028/how-can-i-divide-two-integers-to-get-a-double –

+0

Мои извинения :) – Evanark

ответ

4

Попробуйте вместо этого:

double FirstPassYield = ((RowTotal - DefectCount)/(double)RowTotal) * 100; 

При разделении int на int, результат a int перед тем, как быть отлитым до double, так что вы получите нуль вместо ожидаемого значения. Путем литья знаменателя на double, остальная часть вычислений сводится к совпадению, поэтому вы работаете с double s вместо int s до назначение.

+0

, который работает, но как я могу получить свою ценность выход такой как 95.20%? Я использую toString («P»), но как перемещать десятичное число? Мой текущий выход равен 9520.55 – Evanark

+0

Не умножайте на 100. Процент в C# находится в масштабе 0 - 1, а не 0 - 100. –

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