首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >3个长整型的平均值

3个长整型的平均值
EN

Stack Overflow用户
提问于 2014-05-30 16:01:32
回答 12查看 9.6K关注 0票数 103

我有3个非常大的有符号整数。

代码语言:javascript
复制
long x = long.MaxValue;
long y = long.MaxValue - 1;
long z = long.MaxValue - 2;

我想计算它们的截断平均值。预期平均值为9223372036854775806long.MaxValue - 1

它不可能计算为:

代码语言:javascript
复制
long avg = (x + y + z) / 3; // 3074457345618258600

注意:我读了所有关于2个数字的平均值的问题,但我不知道如何将这种技术应用于3个数字的平均值。

使用BigInteger会非常简单,但让我们假设我不能使用它。

代码语言:javascript
复制
BigInteger bx = new BigInteger(x);
BigInteger by = new BigInteger(y);
BigInteger bz = new BigInteger(z);
BigInteger bavg = (bx + by + bz) / 3; // 9223372036854775806

如果我转换为double,那么当然,我会失去精确度:

代码语言:javascript
复制
double dx = x;
double dy = y;
double dz = z;
double davg = (dx + dy + dz) / 3; // 9223372036854780000

如果我转换成decimal,它可以工作,但也假设我不能使用它。

代码语言:javascript
复制
decimal mx = x;
decimal my = y;
decimal mz = z;
decimal mavg = (mx + my + mz) / 3; // 9223372036854775806

问题:有没有一种方法可以只使用long类型来计算3个非常大的整数的截断平均值?不要把这个问题看作是C#特有的,因为用C#提供示例对我来说更容易。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23949785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档