0

为什么这个语句返回假?当我手动计算时,我得到 114 = 114,这应该是真的:

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

3 回答 3

2

那是因为通过使用Math.PI你引入了浮点运算,它不如实际的整数运算精确。右边的结果实际上是 114.00000000000001,这个值非常非常接近 114,但并不完全如此。

于 2013-09-29T19:08:59.920 回答
1

尝试使用以下代码:

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

结果是:114.00000000000001 不是 114。

于 2013-09-29T19:11:18.703 回答
0

因为

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 ...

于 2013-09-29T19:14:46.480 回答