我想问,因为这个循环给我抛出了错误?,不知道为什么会是这样的结果。 我认为这与浮点有关
感谢您的帮助。
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 ) ;
运行
2.0
2.6
false
最佳答案
您得到false
,因为您正在检查两个double
是否相等。理论上,这两个值应该相等。但是,0.1
的 double
表示形式是不精确的,因此将其与 2.0
相加六次确实不会得到精确的结果值为2.6
。存在微小差异,导致比较失败。
将最后一行更改为:
System.out.println ( Math.abs(a-b) ) ;
看看误差的大小有多小(大约为 4.44*10-16 (demo) )。
如果您想对 Java 的十进制值执行精确运算,请使用 BigDecimal
键入而不是“double”。
关于java - java中的未知循环结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081257/