这是功能:
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);
答案 0 :(得分:1)
因为具有两个/
s作为操作数的运算符int
始终执行integer division。
如果要执行实际除法,则需要将操作数转换为非整数数字类型(float
,double
,decimal
)。换句话说,你必须在之前执行转换,而不是之后。
答案 1 :(得分:0)
你需要施放你的每个操作数来实现它,即:
return ((decimal)(kat1 + kat2 * 2) / (decimal)(numberOfPlants * 2)) * 100;
答案 2 :(得分:0)
你操作整数。
例如:1/3 = 0(如果1和3是int
)。
您应该使用其他类型(小数或浮点数等)。