2013-10-04 215 views
1

嗨我正面临一个我无法调试的java问题。比较运算符问题

我已经设置了双变量

double minMean = (Double.MIN_VALUE); 

我有另一双可变

double mean = -5000; 

,当我尝试以下条件

if(mean>minMean) 
      print mean 

行 “打印表示” 没有按不会被执行。任何这是为什么不工作的指针,

+1

我想检查一下条件,我在if block中做了一些操作,我的问题是:为什么这个条件是错误的 –

+0

'print mean' id是一个死代码,它永远不会去那个语句,因为mean Joshi

回答

6

Double.MIN_VALUE是最小正值。所述minimim有限负值只是Double.MAX_VALUE与前面-符号:

double minMean = -Double.MAX_VALUE; 

IEEE 754浮点数具有MSB位保留作为符号位。所以,你的正数与负数相同。您只需要翻转标志位即可获得负值。

+0

我已经检查过我的代码'double minMean = -Double.MAX_VALUE;'也不适用于相同的代码。 –

+0

'-Double.MAX_VALUE'是最少的有限值。实际最小值是-infinity。 –

4

Double.MIN_VALUE文档:

A constant holding the smallest positive nonzero value of type double, 2-1074 

由于您的数字为负也不会大。

+0

感谢亨利,有没有什么办法可以获得最低的负值 –

+0

你可以试试' - Double.MAX_VALUE' – Henry

4

你错以MIN_VALUE的含义:

MIN_VALUE

的常量保持类型的最小正非零值加倍,2-1074。

最小正,即MIN_VALUE > 0

0

我尝试这样做,发现

System.out.println("Min value is "+Double.MIN_VALUE); 

最小值是4.9E-324

您的打印命令,不是因为你没有执行。更大。