Eci*_*ana 3 math floating-point integer average
我想计算三个数字的平均值,如:
d = int(round((a + b + c) / 3.0))
Run Code Online (Sandbox Code Playgroud)
其中a,b,c,d为整数.
是否可以仅使用整数得到相同的结果?
我对此感兴趣是因为性能原因,我假设使用整数进行数学计算应该比使用浮点数更快.
上面的示例将整数转换为浮点数,计算结果,对其进行舍入并转换回整数.是否可以避免int < - > float转换?
鉴于1,1,2 - > 1的要求; 1,2,2 - > 2然后可以使用整数除法来完成.
使用//表示整数除法,使用n表示元素数.
average = ( a+ b + c + .... + n//2 ) // n
Run Code Online (Sandbox Code Playgroud)
即汇总所有值,然后添加一个数字来处理舍入.
正如@ Henrik的回答所述,这假设所有数字都是正数.