如何获得比Long.MAX_VALUE更长的长号?
我希望此方法返回true
:
boolean isBiggerThanMaxLong(long val) {
return (val > Long.MAX_VALUE);
}
答案 0 :(得分:50)
该方法无法返回true
。那是Long.MAX_VALUE
的点。如果它的名字是......假的,那么真的会让人感到困惑。然后它应该被称为Long.SOME_FAIRLY_LARGE_VALUE
并且实际上没有合理的用途。只需使用Android's isUserAGoat
,或者您可以滚动自己的函数,该函数始终返回false
。
请注意,内存中的long
需要固定的字节数。 From Oracle:
long:long数据类型是64位带符号的二进制补码整数。它的最小值为-9,223,372,036,854,775,808,最大值为9,223,372,036,854,775,807(含)。当需要比int提供的值范围更宽的值时,请使用此数据类型。
正如您可能从基本的计算机科学或离散数学中知道的那样,长达2 ^ 64个可能的值,因为它是64位。正如你从离散数学或数论或常识中所知,如果只有有限多种可能性,其中一种必须是最大的。那将是Long.MAX_VALUE
。所以你问的是“有一个整数是> 0和< 1?”数学荒谬。
如果你真的需要这个用于真实的东西,那么使用BigInteger
类。
答案 1 :(得分:11)
你做不到。如果您有一个名为isBiggerThanMaxLong(long)
的方法,则应始终返回false
。
如果要增加Long.MAX_VALUE
的位,则下一个值应为Long.MIN_VALUE
。阅读二重补充,这应该告诉你原因。
答案 2 :(得分:3)
首先,下面的方法没有编译,因为它缺少返回类型,应该Long.MAX_VALUE
代替Long.Max_value
。
public static isBiggerThanMaxLong(long l){
return l>Long.Max_value;
}
上述方法永远无法返回true
,因为您要将long
值与Long.MAX_VALUE
进行比较,请参阅只能在其中传递long
的方法签名。任何{{ 1}}可以和long
一样大,但不能大于那个。
您可以使用BigInteger类尝试类似的内容:
Long.MAX_VALUE
以下代码将返回public static boolean isBiggerThanMaxLong(BigInteger l){
return l.compareTo(BigInteger.valueOf(Long.MAX_VALUE))==1?true:false;
}
:
true
答案 3 :(得分:2)
如果triangle.lborderA
确实很长,那么原始代码中的测试很简单,并且没有办法测试它。它也没用。
但是,如果triangle.lborderA
是双精度数,则比较非常有用并且可以进行测试。 isBiggerThanMaxLong(1e300)
确实返回true。
public static boolean isBiggerThanMaxLong(double in){
return in > Long.MAX_VALUE;
}
答案 4 :(得分:0)
请记住 BigInteger 是一个类,而 long 是一个原始类型。如果您想比较比 long_max_value 大的值,请将您的值包装在 BigInteger 类中并将它们视为对象。