This question already has answers here:
how to avoid the potential of an overflow when computing an average of times?
(3个答案)
去年关闭。
我需要计算n个数字的平均值。 N在编译时未知。每个数字都可以是int64_t类型,但我知道平均值也适合int64_t类型。问题是n个数字的总和对于int64_t可能太大。
有什么建议么?
也可以将其扩展为n个数字。
假设您有N1,N2 .... Nn-1,Nn中的n个数字
(3个答案)
去年关闭。
我需要计算n个数字的平均值。 N在编译时未知。每个数字都可以是int64_t类型,但我知道平均值也适合int64_t类型。问题是n个数字的总和对于int64_t可能太大。
有什么建议么?
最佳答案
两次平均无溢出
Average = (a / 2) + (b / 2) + (((a % 2) + (b % 2)) / 2)
也可以将其扩展为n个数字。
假设您有N1,N2 .... Nn-1,Nn中的n个数字
Average = (N1 / n) + (N2 / n) +.....+ (Nn-1 / n) + (Nn / n)
+
((N1 % n) + (N2 % n) +.....+ (Nn-1 % n) + (Nn % n)) / n
关于c++ - 如何计算int64_t的平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56663116/
10-17 02:14