首页 > 解决方案 > 无法将值存储在变量中

问题描述

我想从数据库中找到两个值的百分比。当我执行计算时,变量不存储结果。有人请告诉我为什么会这样。

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;
}

标签: c#asp.net

解决方案


你再一次被整数语义弄糊涂了。从数学中我们知道 1 / 3 是 0.33333333...但是这不适用于编程,其中一个整数(1 和 3 是什么)除以另一个整数总是会产生另一个整数,因此浮点数总是乘以另一个整数结果是一个float

因此以下返回零:

1 / 3

因此,您必须告诉编译器您想要浮点算术,这可以通过将运算符之一转换为float或使用浮点文字来实现。以下表达式返回正确的浮点数:

1f / 3

或者,您也可以写1.0 / 3or1 / 3f1 / 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;
}

推荐阅读