我怎样才能得到比 Long.MAX_VALUE 大的长数字?
我希望此方法返回 true
:
boolean isBiggerThanMaxLong(long val) {
return (val > Long.MAX_VALUE);
}
原文由 gongshw 发布,翻译遵循 CC BY-SA 4.0 许可协议
我怎样才能得到比 Long.MAX_VALUE 大的长数字?
我希望此方法返回 true
:
boolean isBiggerThanMaxLong(long val) {
return (val > Long.MAX_VALUE);
}
原文由 gongshw 发布,翻译遵循 CC BY-SA 4.0 许可协议
你不能。如果你有一个名为 isBiggerThanMaxLong(long)
的方法,它应该总是返回 false
。
如果要增加 Long.MAX_VALUE
的位,下一个值应该是 Long.MIN_VALUE
。阅读二进制补码,这应该会告诉您原因。
原文由 James Cronen 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答1.6k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
4 回答2k 阅读
2 回答791 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.4k 阅读
该方法不能返回
true
。这就是Long.MAX_VALUE
的 _重点_。如果它的名字是……假的,那将 真的很 混乱。那么它应该被称为Long.SOME_FAIRLY_LARGE_VALUE
并且合理使用实际上为零。只需使用 Android 的isUserAGoat
,或者您可以滚动自己的函数,该函数始终返回false
。请注意,内存中的
long
占用固定数量的字节。 来自甲骨文:您可能从基础计算机科学或离散数学中了解到,long 有 2^64 个可能的值,因为它是 64 位。正如你从离散数学或数论或常识中了解到的那样,如果只有有限多种可能性,那么其中一种必须是最大的。那将是
Long.MAX_VALUE
。所以你问的是类似于“是否有一个大于 0 且小于 1 的整数?”数学上毫无意义。如果你真的需要这个来做一些真正的事情,那么使用
BigInteger
类。