比较Java中的无穷大

时间:2008-12-01 12:48:12

标签: java

以下表达式在Java中返回什么?

Math.max(Float.POSITIVE_INFINITY, Double.POSITIVE_INFINITY);

我在网站上看到了这个问题,答案是Double.POSITIVE_INFINITY。我不确定这个答案,我们如何比较2个无穷大?有人可以澄清一下吗?感谢。

4 个答案:

答案 0 :(得分:26)

Float.POSITIVE_INFINITY返回float,Double.POSITIVE_INFINITY返回double。

没有名为Math.max的方法(float,double)。 只有Math.max(float,float)和Math.max(double,double)

因此,当该方法被称为Math.max(float,double)时,它将float参数转换为double,因此调用Math.max(double,double),以便返回Double.POSITIVE_INFINITY。

Java不会从double转换为float,因为它可能导致精度问题。

答案 1 :(得分:2)

当然你可以比较无穷大。除非你进入具有不同无穷大程度的超限编号系统,否则无限意味着它所说的,一个没有限制的数字。

无限制的两个数字的最大值/总和/乘积/平均值是一个没有限制的数字。

答案 2 :(得分:1)

我认为您会发现使用为double和float类型定义的特殊值的所有操作都在IEEE floating point spec中定义。大多数编程语言和几乎所有CPU都遵循该标准。

答案 3 :(得分:-1)

从数学的角度来说,你是否可以比较无穷大的问题最好留给数学上更具数学知识的人。但我认为在Float.POSITIVE_INFINITY与Double.POSITIVE_INFINITY的情况下,只是Double大于Float的情况,而POSITIVE_INFINITY常量只是每种数据类型的最大可能值。