我想计算三个数字的平均值,例如:
d = int(round((a + b + c) / 3.0))
哪里
a
, b
, c
, d
是整数。是否可以仅使用整数获得相同的结果?
由于性能原因,我对此很感兴趣,我认为使用整数进行数学运算应该比使用浮点数更快。
上面的例子将整数转换为浮点数,计算结果,四舍五入并转换回整数。是否可以避免 int <-> float 转换?
最佳答案
鉴于 1, 1, 2 -> 1 的要求; 1, 2, 2 -> 2 那么这可以使用整数除法来完成。
使用//进行整数除法,使用 n 表示元素数。
average = ( a+ b + c + .... + n//2 ) // n
即总结所有的值,然后添加一个数字来处理四舍五入。
正如@Henrik 的回答中所指出的,这假设所有数字都是正数。
关于math - 使用整数的 3 个数字的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11901152/