为什么此语句返回false?当我用手工计算的话,我得到114 = 114这应该是真实的:条件语句返回错误
System.out.println(114 == (114.0/Math.PI * Math.PI));
为什么此语句返回false?当我用手工计算的话,我得到114 = 114这应该是真实的:条件语句返回错误
System.out.println(114 == (114.0/Math.PI * Math.PI));
这是因为,通过使用Math.PI
您介绍浮点运算,这是不一样的实际整数运算精确。右边的结果实际上是114.00000000000001,这个值非常非常接近114,但不完全一样。
Ahhhhh ...明白了,谢谢!!!!!!! – user2829091
尝试用下面的代码:
double res=114.0/Math.PI * Math.PI;
System.out.println(res);
结果是:114.00000000000001不是114
非常感谢,现在有道理。 – user2829091
因为
System.out.println(114.0/Math.PI * Math.PI);
将打印
114.00000000000001
您可以尝试
System.out.println(114 == (int)(114.0/Math.PI * Math.PI));
(转换浮子INT)这将返回true ...
非常感谢。 – user2829091
'System.out.printf( “%。15F \ n”,(114.0 /数学.PI * Math.PI));'。 –
当你手动计算它时,你在中间结果'114.0/Math.PI'中携带了多少位数?你用什么舍入规则来生成这些位? –