比较double和int

时间:2013-07-30 00:20:16

标签: java floating-point int

对于此代码:

double foo = 100.0;
...
// foo may or may not change value here
...
if (foo == 100) {  // will this ever be true?
    ....
}

是否会调用if块?如果没有,检查foo == 100.0是否正确的方法是什么?

2 个答案:

答案 0 :(得分:2)

试一试,交配......

public class Test
{
   public static void main(String[] args)
   {
      double foo = 100.0;

      if (foo == 100) 
      {
         System.out.println("true");
      }
   }
}

输出:

true

答案 1 :(得分:1)

是的,可以调用它。测试可以是true。如果单独foo(或重新分配给100.0),则比较将成功。

但它只会成功,因为100.0完全表示为double,而int100将转换为通过扩展原语转换获得相同的100.0 double值。

谨慎使用==来比较double值是正确的,因为某些double值是精确文字的不精确表示(例如0.1被不恰当地表示为double)。

比较double值的最佳方法是确保值在彼此的某个(低)容差范围内as JUnit does

  

assertEquals(双重预期,双重实际,双重增量)

这可确保expectedactual值在公差值delta内。