【发布时间】:2019-11-01 22:11:39
【问题描述】:
我需要计算 n 个数字的平均值。 N 在编译时是未知的。每个数字都可以是 int64_t 类型,但我知道平均值也适合 int64_t 类型。问题是 n 个数字的总和对于 int64_t 来说可能太大了。 有什么建议吗?
【问题讨论】:
-
使用 int128_t?
-
@TarickWelling:标准中没有这样的类型,即使是这样,它也不会真正回答问题(我承认,这可能应该用@987654322 来表达@)。现在,如果您将该链接转换为答案,那会很有帮助...
-
您没有指定您的平台或编译器:GCC 和 CLANG 确实支持 128 位 int 的非标准变体。但我认为我更喜欢增量方法
-
gcc 也有 __builtin_add_overflow 会告诉你是否发生溢出,这也可能有帮助