我有这个代码来计算二叉树的主要分支之间的差异,重要的是最终的.调试我到达最后一个表达式:
return difRama/total;
这将始终返回0到1之间的小数,以百分比表示.我得到的情况如下:
返回5/15
返回4/10
float Arbol::diferenciaRamas(pnodo rama1, pnodo rama2){ int total, difRama, pesoIzq, pesoDer; /* Calculamos pesos rama izq yder*/ pesoIzq = pesoRamificaciones(rama1); pesoDer = pesoRamificaciones(rama2); /* Diferencia de peso entre ramas */ difRama = abs(pesoIzq - pesoDer); /* Total de peso del arbol */ total = (pesoIzq+pesoDer); /* Si el total es 0 o la diferencia es 0 */ if(total == 0 || difRama == 0) return 0; /* Porcentaje de diferencia */ return difRama / total; }
问题是函数总是返回0,任何想法?
该分裂发生之前从隐式转换int
到float
.
你需要从一个显式转换int
到float
除法之前.
return (float) difRama / total;
您应该通过运算符优先级规则知道上面的转换应用于difRama
除法之前(而不是除法的结果).