为什么这个语句返回假?当我手动计算时,我得到 114 = 114,这应该是真的:
System.out.println(114 == (114.0 / Math.PI * Math.PI));
为什么这个语句返回假?当我手动计算时,我得到 114 = 114,这应该是真的:
System.out.println(114 == (114.0 / Math.PI * Math.PI));
那是因为通过使用Math.PI
你引入了浮点运算,它不如实际的整数运算精确。右边的结果实际上是 114.00000000000001,这个值非常非常接近 114,但并不完全如此。
尝试使用以下代码:
double res=114.0 / Math.PI * Math.PI;
System.out.println(res);
结果是:114.00000000000001 不是 114。
因为
System.out.println(114.0 / Math.PI * Math.PI);
将打印
114.00000000000001
你可以试试
System.out.println(114 == (int)(114.0 / Math.PI * Math.PI));
(将 float 转换为 int)这将返回 true ...