double a = 2.2;
double b = 2.2;
System.out.println("a==b"+(a == b)); System.out.println("1.0+1.2==2.2"+(1.0+1.2==2.2));
System.out.println("0.9+1.3==2.2"+(0.9+1.3==2.2));
System.out.println("0.8+1.4==2.2"+(0.8+1.4==2.2));
System.out.println("0.7+1.5==2.2"+(0.7+1.5==2.2));
System.out.println("0.6+1.6==2.2"+(0.6+1.6==2.2));
System.out.println("0.5+1.7==2.2"+(0.5+1.7==2.2));
System.out.println("0.4+1.8==2.2"+(0.4+1.8==2.2));
System.out.println("0.3+1.9==2.2"+(0.3+1.9==2.2)); System.out.println("1.1+1.1==2.2"+(1.1+1.1==2.2));
System.out.println("1.2+1.0==2.2"+(1.2+1.0==2.2));
System.out.println("1.3+0.9==2.2"+(1.3+0.9==2.2));
System.out.println("1.4+0.8==2.2"+(1.4+0.8==2.2));
System.out.println("1.5+0.7==2.2"+(1.5+0.7==2.2));
System.out.println("1.6+0.6==2.2"+(1.6+0.6==2.2));
System.out.println("1.7+0.5==2.2"+(1.7+0.5==2.2));
System.out.println("1.8+0.4==2.2"+(1.8+0.4==2.2));
System.out.println("1.9+0.3==2.2"+(1.9+0.3==2.2));
System.out.println("2+0.2==2.2"+(2+0.2==2.2));
1.0+1.2==2.2true
0.9+1.3==2.2true
0.8+1.4==2.2true
0.7+1.5==2.2true
0.6+1.6==2.2true
0.5+1.7==2.2true
0.4+1.8==2.2true
0.3+1.9==2.2false
1.1+1.1==2.2true
1.2+1.0==2.2true
1.3+0.9==2.2true
1.4+0.8==2.2true
1.5+0.7==2.2true
1.6+0.6==2.2true
1.7+0.5==2.2true
1.8+0.4==2.2true
1.9+0.3==2.2false
2+0.2==2.2true
为什么打出来的结果是这样 帮忙解释一下 谢谢啊
double b = 2.2;
System.out.println("a==b"+(a == b)); System.out.println("1.0+1.2==2.2"+(1.0+1.2==2.2));
System.out.println("0.9+1.3==2.2"+(0.9+1.3==2.2));
System.out.println("0.8+1.4==2.2"+(0.8+1.4==2.2));
System.out.println("0.7+1.5==2.2"+(0.7+1.5==2.2));
System.out.println("0.6+1.6==2.2"+(0.6+1.6==2.2));
System.out.println("0.5+1.7==2.2"+(0.5+1.7==2.2));
System.out.println("0.4+1.8==2.2"+(0.4+1.8==2.2));
System.out.println("0.3+1.9==2.2"+(0.3+1.9==2.2)); System.out.println("1.1+1.1==2.2"+(1.1+1.1==2.2));
System.out.println("1.2+1.0==2.2"+(1.2+1.0==2.2));
System.out.println("1.3+0.9==2.2"+(1.3+0.9==2.2));
System.out.println("1.4+0.8==2.2"+(1.4+0.8==2.2));
System.out.println("1.5+0.7==2.2"+(1.5+0.7==2.2));
System.out.println("1.6+0.6==2.2"+(1.6+0.6==2.2));
System.out.println("1.7+0.5==2.2"+(1.7+0.5==2.2));
System.out.println("1.8+0.4==2.2"+(1.8+0.4==2.2));
System.out.println("1.9+0.3==2.2"+(1.9+0.3==2.2));
System.out.println("2+0.2==2.2"+(2+0.2==2.2));
1.0+1.2==2.2true
0.9+1.3==2.2true
0.8+1.4==2.2true
0.7+1.5==2.2true
0.6+1.6==2.2true
0.5+1.7==2.2true
0.4+1.8==2.2true
0.3+1.9==2.2false
1.1+1.1==2.2true
1.2+1.0==2.2true
1.3+0.9==2.2true
1.4+0.8==2.2true
1.5+0.7==2.2true
1.6+0.6==2.2true
1.7+0.5==2.2true
1.8+0.4==2.2true
1.9+0.3==2.2false
2+0.2==2.2true
为什么打出来的结果是这样 帮忙解释一下 谢谢啊
要想得到精确结果,用BigDecimal,int或者long进行计算。
摘自 < <Effective Java>>
要想得到精确结果,用BigDecimal,int或者long进行计算。
摘自 < <Effective Java>>
正解
这是 浮点数表示本身的问题,ieee754标准