请赐教
public class Text5 {
public static void main(String[] args) {
         double PI=3.14;//存放π的值
         double R=1.5;//圆的半径
         double area =PI*R*R;//圆的面积
         System.out.println("圆的面积是:"+area);
}}
输出结果是:
圆的面积是:7.0649999999999995疑问:我们手算的话结果是:7.065
为什么程序输出的结果是:7.0649999999999995请赐教

解决方案 »

  1.   

        public static void main(String[] args) {
            final int accuracy = 3;
            double x = 7.0649999999999995;
            double temp = Math.pow(10, accuracy);
            x = Math.round(x * temp) / temp;        System.out.println(x);
        }
      

  2.   

    1楼说的对  是精度问题   
    你可以把你的 2个参数system.out出来看看 你就知道了
    可以用BigDecimal 型的做参数类型
      

  3.   

    如楼上所说,double不是精准类型,只能存储“约略”的值,所以运算结果也不会准确。要计算或存储精确的值,用BigDecimal类。
    下面这样:
    import java.math.BigDecimal;public class Test5 {  public static void main(String[] args) {    BigDecimal pi = new BigDecimal("3.14");
        BigDecimal r = new BigDecimal("1.5");    BigDecimal area = pi.multiply(r).multiply(r);
        System.out.println("圆的面积是:" + area);
      }
    }
      

  4.   

    double 可精确小数点后10位。。你说呢?