如何在 Java 中实现无穷大?

新手上路,请多包涵

Java 是否有任何东西可以代表每种数字数据类型的无穷大?它是如何实现的,以便我可以用它进行数学运算?

例如

int myInf = infinity; //However it is done
myInf + 5; //returns infinity
myInf*(-1); //returns negative infinity

我尝试过使用非常大的数字,但我想要一个合适、 简单 的解决方案。

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

阅读 750
2 个回答

double 支持无穷大

double inf = Double.POSITIVE_INFINITY;
System.out.println(inf + 5);
System.out.println(inf - inf); // same as Double.NaN
System.out.println(inf * -1); // same as Double.NEGATIVE_INFINITY

印刷

Infinity
NaN
-Infinity

注意: Infinity - Infinity _不是数字_。

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

我假设您出于某种原因使用整数数学。如果是这样,您可以通过使用 Integer 类的 MAX_VALUE 字段获得功能上与 POSITIVE_INFINITY 几乎相同的结果:

 Integer myInf = Integer.MAX_VALUE;

(对于 NEGATIVE_INFINITY,您可以使用 MIN_VALUE。)当然会有一些功能差异,例如,将 myInf 与恰好是 MAX_VALUE 的值进行比较时:显然这个数字不小于 myInf 。另外,正如下面评论中所指出的,增加正无穷大将使您回到负数(而减少负无穷大将使您回到正数)。

还有 一个库 实际上有字段 POSITIVE_INFINITY 和 NEGATIVE_INFINITY,但它们实际上只是 MAX_VALUE 和 MIN_VALUE 的新名称。

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

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