比 Long.MAX_VALUE 大的 long

新手上路,请多包涵

我怎样才能得到比 Long.MAX_VALUE 大的长数字?

我希望此方法返回 true

 boolean isBiggerThanMaxLong(long val) {
    return (val > Long.MAX_VALUE);
}

原文由 gongshw 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 606
2 个回答

该方法不能返回 true 。这就是 Long.MAX_VALUE 的 _重点_。如果它的名字是……假的,那将 真的很 混乱。那么它应该被称为 Long.SOME_FAIRLY_LARGE_VALUE 并且合理使用实际上为零。只需使用 Android 的 isUserAGoat ,或者您可以滚动自己的函数,该函数始终返回 false

请注意,内存中的 long 占用固定数量的字节。 来自甲骨文

long:long 数据类型是一个 64 位有符号二进制补码整数。最小值为-9,223,372,036,854,775,808,最大值为9,223,372,036,854,775,807(含)。当您需要的值范围比 int 提供的范围更宽时,请使用此数据类型。

您可能从基础计算机科学或离散数学中了解到,long 有 2^64 个可能的值,因为它是 64 位。正如你从离散数学或数论或常识中了解到的那样,如果只有有限多种可能性,那么其中一种必须是最大的。那将是 Long.MAX_VALUE 。所以你问的是类似于“是否有一个大于 0 且小于 1 的整数?”数学上毫无意义。

如果你真的需要这个来做一些真正的事情,那么使用 BigInteger 类。

原文由 djechlin 发布,翻译遵循 CC BY-SA 4.0 许可协议

你不能。如果你有一个名为 isBiggerThanMaxLong(long) 的方法,它应该总是返回 false

如果要增加 Long.MAX_VALUE 的位,下一个值应该是 Long.MIN_VALUE 。阅读二进制补码,这应该会告诉您原因。

原文由 James Cronen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题