System.out.println(0.32*0.01); 输出的是0.0032System.out.println(0.33*0.01); 输出的是0.0033000000000000004为什么加了0。01就会这样呢? double到底是怎么进行运算的? 谢谢

解决方案 »

  1.   

    如果你想限制或者四舍五入那么 就format一下就OK至于double 高人lai
      

  2.   

    Java的简单类型不能够精确的对浮点数进行运算 可以用  java.math.BigDecimal;   
      

  3.   

    用BigDecimal类包装一下  在进行精确计算
      

  4.   

    public class Main { 
        public static void main(String[] args) { 
            double d=2.0; 
            double d2=1.1; 
            System.out.println(d-d2); 
        } 
    }
    d-d2=0.8999999999999999我觉得与这个类似!以前有个老大给的建议是:
    参考计算机组成原理上的,浮点数的表示. 
    或者查ieee754.
      

  5.   

    已经有人给解决了。
    仔细看看上面的回复,自己google一下计算机是如何表示浮点数的,或者再把组成原理课本翻翻。
      

  6.   

    看看计算机组成原理相关的书吧。
    浮点数的表示及运算都有精度限制的,不是精确的。
    浮点数的意义就在于牺牲精度,来换取表示范围。比如,double类型绝对值最小能表示到10的-300多次方,最大能到10的300多次方。
    而定点数,比如int,虽然每一位都是精确的,但它只能表示到21亿。
      

  7.   

    但double能够保证15位有效数字的精度,对于满足日常的浮点运算需要,足够足够了。——10万亿分之一的误差,好像发射卫星也够了吧。