C# 开关的返回值始终为0

C# 开关的返回值始终为0,c#,winforms,C#,Winforms,我正在为学校做一个项目,我试图计算汽车在一定距离内的燃油消耗量,但开关总是返回0。我尝试了不同的方法,但似乎都不管用 public Double DetermineFuelConsumption (String Car, Double Kilometers) { Double FuelConsumption = 0; switch (Car) { // (14 / 100) ---> Liters p

我正在为学校做一个项目,我试图计算汽车在一定距离内的燃油消耗量,但开关总是返回0。我尝试了不同的方法,但似乎都不管用

    public Double DetermineFuelConsumption (String Car, Double Kilometers)
    {
        Double FuelConsumption = 0;

        switch (Car)
        {
            // (14 / 100) ---> Liters per 100 Kilometers
            case "LaFerrari":
                FuelConsumption = (14 / 100) * Kilometers;
                break;
            case "Nissan GT-R Nismo":
                FuelConsumption = (12 / 100) * Kilometers;
                break;
            case "Pagani Huayra":
                FuelConsumption = (18 / 100) * Kilometers;
                break;
            case "McLaren P1":
                FuelConsumption = (8 / 100) * Kilometers;
                break;
            case "Lamborghini Aventador":
                FuelConsumption = (16 / 100) * Kilometers;
                break;
            case "Smart":
                FuelConsumption = (4 / 100) * Kilometers;
                break;
            case "Porsche 911":
                FuelConsumption = (9 / 100) * Kilometers;
                break;
            case "Audi R8":
                FuelConsumption = (15 / 100) * Kilometers;
                break;
        }
        return FuelConsumption;
    }
试一试

试一试


您试图除以2个整数(a/b),在这种情况下,a将是一个0的分数。一些数字将四舍五入为int,这意味着0。然后乘以0*km,好吧。。你看这幅画


将其改为
(14/100d)

您尝试除以2个整数(a/b),在a的情况下,a将是一个0的分数。一些数字将四舍五入为int,这意味着0。然后乘以0*km,好吧。。你看这幅画


改为
(14/100d)

所有被100除的数字都将产生0

这是整数除法:整数除以整数的结果始终是整数。您需要指定您的数字是浮点类型:

public Double DetermineFuelConsumption (String Car, Double Kilometers)
{
    Double FuelConsumption = 0;

    switch (Car)
    {
        // (14 / 100) ---> Liters per 100 Kilometers
        case "LaFerrari":
            FuelConsumption = (14d / 100d) * Kilometers;
            break;
        case "Nissan GT-R Nismo":
            FuelConsumption = (12d / 100d) * Kilometers;
            break;
        case "Pagani Huayra":
            FuelConsumption = (18d / 100d) * Kilometers;
            break;
        case "McLaren P1":
            FuelConsumption = (8d / 100d) * Kilometers;
            break;
        case "Lamborghini Aventador":
            FuelConsumption = (16d / 100d) * Kilometers;
            break;
        case "Smart":
            FuelConsumption = (4d / 100d) * Kilometers;
            break;
        case "Porsche 911":
            FuelConsumption = (9d / 100d) * Kilometers;
            break;
        case "Audi R8":
            FuelConsumption = (15d / 100d) * Kilometers;
            break;
    }
    return FuelConsumption;
}

在这里,
d
后缀指定这些数字是双精度的,而不是整数。

所有除以100的数字都将得到0

这是整数除法:整数除以整数的结果始终是整数。您需要指定您的数字是浮点类型:

public Double DetermineFuelConsumption (String Car, Double Kilometers)
{
    Double FuelConsumption = 0;

    switch (Car)
    {
        // (14 / 100) ---> Liters per 100 Kilometers
        case "LaFerrari":
            FuelConsumption = (14d / 100d) * Kilometers;
            break;
        case "Nissan GT-R Nismo":
            FuelConsumption = (12d / 100d) * Kilometers;
            break;
        case "Pagani Huayra":
            FuelConsumption = (18d / 100d) * Kilometers;
            break;
        case "McLaren P1":
            FuelConsumption = (8d / 100d) * Kilometers;
            break;
        case "Lamborghini Aventador":
            FuelConsumption = (16d / 100d) * Kilometers;
            break;
        case "Smart":
            FuelConsumption = (4d / 100d) * Kilometers;
            break;
        case "Porsche 911":
            FuelConsumption = (9d / 100d) * Kilometers;
            break;
        case "Audi R8":
            FuelConsumption = (15d / 100d) * Kilometers;
            break;
    }
    return FuelConsumption;
}

在这里,
d
后缀指定这些数字是双精度的,而不是整数。

您是否通过调试car变量内部的内容进行了检查?显示一个返回零的示例调用。搜索整数分区可以避免打开字符串。请改用枚举。@EhsanSajjad在car变量中是用户必须从组合框中选择的汽车名称。该位工作正常。您是否通过调试car变量内部的内容进行了检查?显示一个返回零的示例调用。搜索整数分区我将避免打开字符串。请改用枚举。@EhsanSajjad在car变量中是用户必须从组合框中选择的汽车名称。该位工作正常。(在执行除法的所有表达式上,因为
16/100
是整数除法,所以这将给出
0
而不是
0.16f
)(在执行除法的所有表达式上,因为
16/100
是整数除法,所以这将给出
0
而不是
0.16f