Java 获取数字小于最小整数值的算术平均值?
我有这个任务,我需要找到平均2整数。 这是我的密码:Java 获取数字小于最小整数值的算术平均值?,java,c++,average,Java,C++,Average,我有这个任务,我需要找到平均2整数。 这是我的密码: public class AverageNumber { public int average(int a, int b) { if (a == Integer.MIN_VALUE && b == Integer.MIN_VALUE) { return Integer.MIN_VALUE; } else if (a < 0 || b < 0) { return (a +
public class AverageNumber {
public int average(int a, int b) {
if (a == Integer.MIN_VALUE && b == Integer.MIN_VALUE) {
return Integer.MIN_VALUE;
} else if (a < 0 || b < 0) {
return (a + b)/2;
}
return (a+b)>>>1;
}
}`
我需要一些关于超出范围=Integer.MIN_值的数字的帮助。而且我不能用长字体。听起来像家庭作业:-)
这更像是一个数学问题,而不是一个编程问题
计算两者之间的差值,将差值的一半加到“较小”的数字上。对于负数,您必须更加详细地解释,但这样您就不会“溢出”整数。当您的数据(以及依赖于它的计算)无法放入提供给您的存储空间(这里就是这种情况)时,您需要编写或使用(许多免费提供的)“大数”库之一。鉴于你的陈述,我不能使用长类型,我希望你在一个类中,你被期望形成自己的有限大数函数。堆栈溢出不会为您编写代码,但如果您试图编写自己的代码并遇到麻烦,您可能会在发布自己为解决问题所做的代码和努力后获得帮助。这是家庭作业吗?您只能使用
int
s进行计算吗?实际上,鉴于您在这里尝试执行的操作范围有限,因此不需要复杂的库。虽然我们通常认为执行平均值的方法是将两个值相加,然后将结果除以2,但这不起作用,因为无法安全地将两个输入相加。在不透露太多的情况下,您可以重写公式,这样您就不必添加两个会溢出int的值。差异仍然会溢出。最终,我通过使用这些按位操作做到了这一点:(a>>1)+(b>>1)@MaxShpak-你可能刚刚做了a/2+b/2
,然后…是的,我知道。但优先级是按位操作:)
Input: -2147483648, -2
Expected: -1073741825
Actual: "1073741823"