日期:2014-05-20  浏览次数:20843 次

为什么这段代码运行输出是这样的东西?
public class Demo_final {
public static void main(String[] args) {
System.out.println(circleArea(5));
System.out.println( circleGirth(20));
System.out.println(PI);
System.out.println(new Demo_final().y);

}
static final double PI=3.14;
double y=2*5;
static double circleArea(double r){
return PI*r*r;
}
static double circleGirth(double r){
return PI*r*2;
}
}

输出:
78.5
125.60000000000001 (这个是为什么???)
3.14
10.0

------解决方案--------------------
因为内部用二进制表示,所以浮点数计算是不精确的,具体原因可以google一下。如果需要精确,可以用BigDecimal
------解决方案--------------------
楼上说的正确