为什么在Java中 表达式5*1.414 会等于7.069999999999999,其中5为int类型,1.414为double类型。哪位朋友能够帮忙详细解释一下?

解决方案 »

  1.   

    方法一:用 BigDecimal , int 或者 long 。
    方法二:new java.text.DecimalFormat("0.00").format(5*1.414)
      

  2.   

    int型和double型相乘,过程是先把int型转换为double型,相乘得到double型的值,而double型的值是用17位数
    表示的
      

  3.   

    精确计算使用BigDecimal类 BigDecimal bigDecimal=new BigDecimal("5");
    BigDecimal bigDecimal2=new BigDecimal("1.414");
    System.out.println(bigDecimal.multiply(bigDecimal2).toString());
    System.out.println(5*1.414);
      

  4.   

    因为二进制无法表示分数1/10的,所以2。0-1。1=0。899999999
    用bigDecimal类就行了