以下表达式在Java中返回什么?
Math.max(Float.POSITIVE_INFINITY, Double.POSITIVE_INFINITY);
我在网站上看到了这个问题,答案是Double.POSITIVE_INFINITY
。我不确定这个答案,我们如何比较2个无穷大?有人可以澄清一下吗?感谢。
答案 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常量只是每种数据类型的最大可能值。