math - 使用整数的 3 个数字的平均值

标签 math floating-point integer average

我想计算三个数字的平均值,例如:

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/

相关文章:

math - float 学有问题吗?

floating-point - 为什么 float 不正确?

整数的可计算大小

c# - 在 C# 中,如何提取构成 UInt128 的两个 UInt64 值?

Java 回文、方法和抽象类?

javascript - 在 JS 中四舍五入到最接近的倍数

javascript - 数据集的线性插值通常是如何实现的?

c# - + 带字符串的 C# 运算符

c - C中的函数通信

numpy - 在 python 中模拟固定精度