package com;public class AreaTest {
public static void main(String[] args) {
double a=1.9;
double b=0.3;
double c=2*(a+b);
System.out.println(c);
}
}为什么输出的结果是4.3999999999999995
而将a,b,c换成float类型,结果才是4.4

解决方案 »

  1.   

    恩  double不能参与精确计算。float也是不能参与精确计算的。可以用BigDecimal类来解决。
      

  2.   

    float和double都是浮点数,只是double占得字节数更大,所以可以表示的数字也更大。但浮点数是不精确的。
      

  3.   

             因为float与double所表示的范围不同(float占4个字节,double占8个字节)
             对于浮点之间的运算,大部分都能得到你所期望的结果,当然也有例外(你说的那个也算一个),特别是
    在商业运算中为了精确,浮点数之间的运算最好都使用BigDeciaml来实现

             
      

  4.   

    有些小数计算机无法用2进制精确的表示为float或者double,一般做精确的计算就用BigDecimal,并且要用String作为构造参数new BigDecimal("0.1"),否者有时以double作为参数构造的BigDecimal也会出现这样的问题