如何获取比Long.MAX_VALUE更大的长整型数?
我希望此方法返回true
:
boolean isBiggerThanMaxLong(long val) {
return (val > Long.MAX_VALUE);
}
如何获取比Long.MAX_VALUE更大的长整型数?
我希望此方法返回true
:
boolean isBiggerThanMaxLong(long val) {
return (val > Long.MAX_VALUE);
}
该方法无法返回true
。这就是Long.MAX_VALUE
的意义所在。如果其名称为false,那将会非常令人困惑。然后它应该只被称为Long.SOME_FAIRLY_LARGE_VALUE
并且完全没有合理的用途。只需使用Android的isUserAGoat
,或者您可以编写一个始终返回false
的自定义函数。
请注意,内存中的long
占用固定数量的字节。来自Oracle的介绍:
long:长整型数据类型是一个64位带符号的二进制补码整数。它的最小值为-9,223,372,036,854,775,808,最大值为9,223,372,036,854,775,807(包括两个端点)。当需要比int提供的范围更广的值范围时,请使用此数据类型。
正如你从基础计算机科学或离散数学中所知道的一样,由于它是64位,因此long
有2^64种可能的值。并且正如你从离散数学或数字理论或常识中所知道的,如果只有有限的可能性,则其中之一必须是最大的。这就是Long.MAX_VALUE
。因此,你正在询问类似于“是否存在一个大于0且小于1的整数?” 这在数学上是无意义的。
如果您确实需要这个真实用途,请使用BigInteger
类。
无法做到。如果您有一个名为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;
}
true
,因为您正在将一个long
值与Long.MAX_VALUE
进行比较,查看方法签名,您只能传递long
。任何long
都可以像Long.MAX_VALUE
一样大,但不能超过它。public static boolean isBiggerThanMaxLong(BigInteger l){
return l.compareTo(BigInteger.valueOf(Long.MAX_VALUE))==1?true:false;
}
true
:BigInteger big3 = BigInteger.valueOf(Long.MAX_VALUE).
add(BigInteger.valueOf(Long.MAX_VALUE));
System.out.println(isBiggerThanMaxLong(big3)); // prints true
triangle.lborderA
确实是一个长整型,则原始代码中的测试非常简单,无法进行测试。这也是无用的。triangle.lborderA
是一个双精度浮点数,比较就是有用的且可以进行测试。isBiggerThanMaxLong(1e300)
将返回true。 public static boolean isBiggerThanMaxLong(double in){
return in > Long.MAX_VALUE;
}
只需记住BigInteger是一个类,而long是一个原始类型。如果您想比较大于long_max_value的大值,则将您的值包装在BigInteger类中,并将它们视为对象。
triangle.lborderA
是一个long
,那么你可以删除那个检查。我不会感到惊讶如果它被优化掉了。 - djechlinlborderA < 0
来使该检查失败。同样,您不能使一个检查失败,它说if(Boolean.TRUE)
。 - djechlincom.coffeestainstudios.goatsimulator
包,那么山羊的传送就可以开始了! - MC Emperor