如何在不分支的情况下舍入为整数?

Fin*_*Jon 3 assembly

如何在装配中将整数四舍五入到最接近的整数?此处不允许使用分支。

例如195 * .85 = 165.75。通常,我将195与比例因子(100)相乘,然后相乘,然后除以比例因子。这将给我165。如何获得166?

如果这是一个可怕的问题,对不起,我是新来的!谢谢。

Tom*_*mmy 5

例如195 * .85 = 165.75。通常,我将195与比例因子(100)相乘,然后相乘,然后除以比例因子。这将给我165。如何获得166?

传统上,您将使用两个比例因子的幂并进行移位而不是乘除。我想现在除法和乘法的成本与许多架构上的转换相同,您可能会更关注保持一定的精度。

无论如何,正如halex几乎建议的那样,在除法之前,您需要添加0.5。最终的结果是,如果小数部分已经是0.5或更大,那么您将带进整数部分。如果没有,就不会有进位。

所以:

195 * 100 = 19500
19500 * 0.85 = 16575
16575 + 50(即0.5)= 16625
16625/100 = 166