gon*_*shw 32 java long-integer
如何获得比Long.MAX_VALUE更大的长数字?
我想要这个方法返回true:
boolean isBiggerThanMaxLong(long val) {
return (val > Long.MAX_VALUE);
}
Run Code Online (Sandbox Code Playgroud)
dje*_*lin 61
那种方法无法回归true.这是该点的Long.MAX_VALUE.如果它的名字是......假的,那真是令人困惑.然后它应该被调用Long.SOME_FAIRLY_LARGE_VALUE,并且实际上没有合理的用途.只需使用AndroidisUserAGoat,或者您可以滚动自己的功能,始终返回false.
请注意,long内存中需要固定的字节数. 来自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类.
Jam*_*nen 11
你不能.如果你有一个叫做的方法,isBiggerThanMaxLong(long)它应该总是返回false.
如果要增加位数Long.MAX_VALUE,则应该是下一个值Long.MIN_VALUE.阅读二重补充,这应该告诉你原因.
首先,下面的方法不能编译,因为它缺少返回类型,它应该Long.MAX_VALUE代替Long.Max_value.
public static boolean isBiggerThanMaxLong(long value) {
return value > Long.Max_value;
}
Run Code Online (Sandbox Code Playgroud)
true当您将long值与比较时,上述方法永远不会返回 Long.MAX_VALUE,请参阅您只能在long那里传递的方法签名。任何long可以与 一样大Long.MAX_VALUE,但不能大于 。
你可以用BigInteger类尝试这样的事情:
public static boolean isBiggerThanMaxLong(BigInteger l){
return l.compareTo(BigInteger.valueOf(Long.MAX_VALUE))==1?true:false;
}
Run Code Online (Sandbox Code Playgroud)
以下代码将返回true:
BigInteger big3 = BigInteger.valueOf(Long.MAX_VALUE).
add(BigInteger.valueOf(Long.MAX_VALUE));
System.out.println(isBiggerThanMaxLong(big3)); // prints true
Run Code Online (Sandbox Code Playgroud)