2013-09-29 67 views
0

为什么此语句返回false?当我用手工计算的话,我得到114 = 114这应该是真实的:条件语句返回错误

System.out.println(114 == (114.0/Math.PI * Math.PI)); 
+0

'System.out.printf( “%。15F \ n”,(114.0 /数学.PI * Math.PI));'。 –

+0

当你手动计算它时,你在中间结果'114.0/Math.PI'中携带了多少位数?你用什么舍入规则来生成这些位? –

回答

2

这是因为,通过使用Math.PI您介绍浮点运算,这是不一样的实际整数运算精确。右边的结果实际上是114.00000000000001,这个值非常非常接近114,但不完全一样。

+0

Ahhhhh ...明白了,谢谢!!!!!!! – user2829091

1

尝试用下面的代码:

double res=114.0/Math.PI * Math.PI; 
System.out.println(res); 

结果是:114.00000000000001不是114

+0

非常感谢,现在有道理。 – user2829091

0

因为

System.out.println(114.0/Math.PI * Math.PI); 

将打印

114.00000000000001 

您可以尝试

System.out.println(114 == (int)(114.0/Math.PI * Math.PI)); 

(转换浮子INT)这将返回true ...

+0

非常感谢。 – user2829091