为什么这个函数总是返回零?

时间:2015-04-03 14:15:21

标签: c# function

这是功能:

private decimal? CalculateMe(int? kat0, int? kat1, int? kat2, int? numberOfPlants)
{
    if (numberOfPlants == null || numberOfPlants == 0 || kat0 == null || kat1 == null || kat2 == null)
        return null;

    return ((kat1 + kat2 * 2) / (numberOfPlants * 2)) * 100;
}

此功能始终返回零!即使显式转换为Convert.ToDecimal,函数也会返回零。

return Convert.ToDecimal(((kat1 + kat2 * 2) / (numberOfPlants * 2)) * 100);

3 个答案:

答案 0 :(得分:1)

因为具有两个/ s作为操作数的运算符int始终执行integer division

如果要执行实际除法,则需要将操作数转换为非整数数字类型(floatdoubledecimal)。换句话说,你必须在之前执行转换,而不是之后。

答案 1 :(得分:0)

你需要施放你的每个操作数来实现它,即:

  return ((decimal)(kat1 + kat2 * 2) / (decimal)(numberOfPlants * 2)) * 100;

答案 2 :(得分:0)

你操作整数。 例如:1/3 = 0(如果1和3是int)。

您应该使用其他类型(小数或浮点数等)。