jse*_*rtx -1 c++ floating-point
我有这个代码来计算二叉树的主要分支之间的差异,重要的是最终的.调试我到达最后一个表达式:
return difRama/total;
Run Code Online (Sandbox Code Playgroud)
这将始终返回0到1之间的小数,以百分比表示.我得到的情况如下:
返回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;
}
Run Code Online (Sandbox Code Playgroud)问题是函数总是返回0,任何想法?
该分裂发生之前从隐式转换int到float.
你需要从一个显式转换int到float除法之前.
return (float) difRama / total;
Run Code Online (Sandbox Code Playgroud)
您应该通过运算符优先级规则知道上面的转换应用于difRama除法之前(而不是除法的结果).
| 归档时间: |
|
| 查看次数: |
361 次 |
| 最近记录: |