java中的未知循环结果

时间:2014-09-28 03:15:57

标签: java

我想问一下,因为这个循环会让我失意?不知道为什么会这样。 我认为这与浮点

有关

感谢您的帮助。

double a = 2d;
System.out.println(a);

double b = 2.6d ;
System.out.println(b);

for (int i = 0; i < 6 ; i ++)
{
    a+= 0.1;
}

System.out.println ( a==b ) ;

RUN

2.0
2.6
false

1 个答案:

答案 0 :(得分:1)

您得到false,因为您正在检查两个double是否相等。理论上,这两个值应该相等。但是,double的{​​{1}}表示不准确,因此将其添加到0.1六次会导致2.0的值。存在一些小差异,导致您的比较失败。

将最后一行更改为:

2.6

看错误的大小有多小(大约是4.44 * 10 -16 (demo))。

如果您想对十进制值Java执行精确操作,请使用BigDecimal类型而不是“double”。