如何获得大于long.max_值的长数值?
我希望此方法返回true:
1 2 3
| boolean isBiggerThanMaxLong (long val ) {
return (val > Long. MAX_VALUE);
} |
该方法不能返回true。这就是EDOCX1的观点。如果它的名字是…错误的。那么,它应该被称为Long.SOME_FAIRLY_LARGE_VALUE,并没有任何合理的用途。只需使用Android的isUserAGoat,或者你可以滚动你自己的函数,它总是返回false。
注意,内存中的long采用固定的字节数。来自Oracle:
long: The long data type is a 64-bit signed two's complement integer. It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of 9,223,372,036,854,775,807 (inclusive). Use this data type when you need a range of values wider than those provided by int.
正如你从基础计算机科学或离散数学中所知道的,长时间内可能有2^64个值,因为它是64位的。正如你从离散数学、数论或常识中所知道的,如果只有有限多的可能性,其中之一必须是最大的。那就是Long.MAX_VALUE。所以你会问类似于"是否有一个大于0且小于1的整数?"数学上毫无意义。
如果你真的需要这个,那么使用BigInteger类。
- 有人应该通过发明远程传输来打破isuseragoat API以太,或者至少为山羊创建一个Android小工具。
- @公什假设triangle.lborderA是long,那么您可以删除该支票。如果它优化了,我不会感到惊讶。
- 要测试的源代码包含判断"triangle.lbordera>0&;triangle.lbordera<=long.max_value"。所以我似乎不能让我的单元测试100%覆盖。
- @公什试着让lborderA < 0不通过那项检查。同样,你也不能不通过一张写着"EDOCX1"〔3〕的支票。
- @我先生,根据这个答案,如果你下载了com.coffeestainstudios.goatsimulator包,那么山羊的传送就可以开始了!
不能。如果有一个名为isBiggerThanMaxLong(long)的方法,它应该始终返回false。
如果要增加Long.MAX_VALUE的位,下一个值应该是Long.MIN_VALUE。读两遍补语,你就会明白为什么。
首先,下面的方法没有编译,因为它缺少返回类型,它应该是Long.MAX_VALUE,而不是Long.MAX_VALUE。
1 2 3
| public static isBiggerThanMaxLong (long l ){
return l >Long. Max_value;
} |
上面的方法不能返回true,因为你比较long值和Long.MAX_VALUE值,看方法签名,你只能通过long,任何long都可以和Long.MAX_VALUE一样大,不能大于。
您可以使用BigInteger类尝试类似的操作:
1 2 3
| public static boolean isBiggerThanMaxLong (BigInteger l ){
return l. compareTo(BigInteger. valueOf(Long. MAX_VALUE))==1?true:false;
} |
以下代码将返回true:
如果triangle.lborderA确实很长,那么原始代码中的测试是非常正确的,并且没有办法测试它。它也是无用的。
但是,如果triangle.lborderA是双精度的,则比较是有用的,可以进行测试。isBiggerThanMaxLong(1e300)返回真值。
1 2 3
| public static boolean isBiggerThanMaxLong (double in ){
return in > Long. MAX_VALUE;
} |
- IsBiggerThanmaxlong(long.max_value+1.0)将返回false。isbiggerthanmaxlong(long.max_value+1024.0)也将返回false。如果doubles>=long.max_value+1025.0,则为真。
- @ Samil True。对于任何大于long.max_值的双精度数,它都将返回true,其中有许多。由于浮点取整,long.max_value+1.0不是其中之一。