在C++中舍入平均值的最简单方法

l..*_*l.. 0 c++ rounding

int a, b, c = 0;
c = (a+b)/2;
Run Code Online (Sandbox Code Playgroud)

在这段代码中,如果"a"和"b"都是偶数(例1),则没有问题.但如果其中一个是奇数(例2),则答案将为+0.5.我想把它整理一下.

例1.

a = 4,b = 10

c将= 7这没关系.

例2.

a = 3,b = 4

c将= = 3.5 我希望c被四舍五入而成为4.

Seb*_*edl 7

首先,你错了.c是一个整数,所以它不能是3.5.此外,a,b和2均为整数,所以划分是整数除法,所以它不能在3.5导致任一.它将向零舍入,因此它将为3.

也就是说,要将整数除以2来向上舍入而不是向下舍入,只需在除法之前加1.(14 + 1) / 2 == 7,所以这仍然是正确的.(7 + 1) / 2 == 4,这也是正确的.

  • 值得注意的是,这也可以扩展到一般情况.简单地将"divisor - 1"添加到除法之前的结果将在整数运算中获得`ciel`运算的效果,而不会产生两次运行相同运算的开销,以及模运算. (2认同)