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