我想从数据库中找到两个值的百分比。 当我执行计算时,变量未存储结果。有人请告诉我为什么会这样。
private int GetPercentage(int re, int al)
{
float k;
if (al > 0)
{
k = (float) (re / al) * 100;
}
else
{
k = 100;
}
if (k < 10)
{
float p = 100 - k;
Label3.Visible = true;
Label3.Text = "Customer has used more than " + p + "% of Allotted LPOs";
}
int l = 100 - (int)k;
return l;
}
答案 0 :(得分:1)
再一次让您对整数语义感到困惑。从数学上我们知道1/3是0.33333333 ...但是,编程也不适用,在编程中,将一个整数(分别是1和3)与另一个 allways 分开的结果是另一个整数,从而浮点数与另一个始终相乘的结果为float
。
因此以下内容返回零:
1 / 3
因此,您必须告诉编译器您要的 floating-point (算术浮点数)算法,可以通过将运算符之一转换为float
或使用float-literal来实现。以下表达式返回正确的浮点数:
1f / 3
或者,您也可以写1.0 / 3
或1 / 3f
或1 / 3.0
。
所以您在代码中需要的是:
private int GetPercentage(int re, int al)
{
float k;
if (al > 0)
{
k = ((float) re / al) * 100; // see here, you need to cast to float
}
else
{
k = 100;
}
if (k < 10)
{
float p = 100 - k;
Label3.Visible = true;
Label3.Text = "Customer has used more than " + p + "% of Allotted LPOs";
}
int l = 100 - (int)k;
return l;
}
答案 1 :(得分:0)
您可以在GetPercentage方法中声明变量k和l。因此,它们在其他地方不可用。 如果这样,您可以执行第二步:
if (k < 10)
{
Label3.Visible = true;
Label3.Text = "Customer has used more than " + p + "% of Allotted LPOs";
return (float)100 - k;
}