C#简易数学函数

时间:2011-10-10 15:18:08

标签: c#

我试图计算总成功工作的百分比。 代码:

int total = valid + invalid;
int percent = (valid / total) * 100;
if (percent == 0)
{
  MessageBox.Show(Convert.ToString(total) + ":" + Convert.ToString(valid));
  break;
}

如果所有工作都成功,则百分比为100%。 如果一个工作不好,百分比为0,我得到消息框: 9:8

8/9 * 100 = 88.888,而不是0.

int percent = Convert.ToInt32((valid / total) * 100);

没有结果。请帮我。 我是俄罗斯人,很抱歉英语不好。

11 个答案:

答案 0 :(得分:3)

你的有效变量和总变量是int,这意味着你的有效/总分割将截断为一个整数,在你的情况下总是为0。

如果您将其中一个变量更改为double,则允许除法按您期望的方式执行。

int percent = Convert.ToInt32(((double)valid / total) * 100);

现在,这会导致你的if子句不再正常工作,所以你必须改变它才能检查它是不是100

所以而不是

if (percent == 0)
你想做点什么

if (percent != 100)

代替

答案 1 :(得分:3)

我猜测validinvalid都被定义为int s。在这种情况下,所有计算的结果也将是int

您需要在操作中将其中一个值转换为浮点类型,或者这可能更容易,将其中一个值定义为浮点类型开头:

double total = valid + invalid;
int percent = (valid / total) * 100;

答案 2 :(得分:1)

你只需要进行强制转换,这样你就不会进行整数除法并寻找浮点结果,例如:

    double percent = ((double)valid / total) * 100;

答案 3 :(得分:1)

让你的行成为:

int percent = (int)(((float)valid / (float)total) * 100f);

答案 4 :(得分:1)

您的问题是您在integer(целоечисло)上操作,但要使该部门正常工作,您应该使用rational number

当你执行8/9时,你有0,因为8低于9,所以结果将介于1和0之间。要表示介于1和0之间的数字,你必须使用浮点类型。

float total = valid + invalid;

现在该部门看起来像这样:

 8 / 9.0 

但这仍然没有结束,如果你将浮点数分配给整数,你将有一个编译器警告。

float result = (valid / total) * 100;

答案 5 :(得分:0)

尝试:

float total = valid + invalid;
float percent = (valid / total) * 100;
if (percent == 0)
{
  MessageBox.Show(Convert.ToString(total) + ":" + Convert.ToString(valid));
  break;
}

修改

将百分比更改为浮动。

答案 6 :(得分:0)

在进行计算之前将您的整数转换为浮点数。

int percent = Math.Round(((float)valid / (float)total) * 100);

答案 7 :(得分:0)

你需要使用某种浮点数学而不是整数。

int total = valid + invalid;
int percent = ((decimal)valid / (decimal)total) * 100m;

答案 8 :(得分:0)

问题是(valid / total)的结果是int(整数),validtotalints,所以结果是该部门将截断为整数。

解决方案是强制一个成为floatdoubledecimal

int percent = (int)Convert.ToInt32(((float)valid / total) * 100);

答案 9 :(得分:0)

您应该使用float代替int

float percent = ((float)valid/(float)total) * 100.00f;  

修改
是的,我忘了将vallidtotal投靠浮动。

答案 10 :(得分:0)

您的一个因素需要是浮点值,否则您最终会得到一个整数。

int total = valid + invalid;

int percent = (int)((valid / (float)total) * 100);

if (percent == 0)
{
    MessageBox.Show(Convert.ToString(total) + ":" + Convert.ToString(valid));
    break;
}