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

神奇的结果,7.7-7=???
public class Test{
  public static void main(String[] args){
  double a=7.7,b=7,c;
  c=a-b;
  System.out.println(c);
  }
}


结果等于0.7000000000000002,到底这个2是那来的?为什么得这结果?
我想做计算器,如果计算器算出这个结果就是不对的,但我又不想制这
计算器多少位小数,应该怎么处理?请各位大侠说详细点,谢谢

------解决方案--------------------
这个是计算机 二进制处理数字的原因,论坛上有过详细的帖子 你搜索一下
------解决方案--------------------
float 和 double 等浮点类型计算时经常有0.0000***1的偏差的,我通常是将double转换成BigDecimal进行计算,可以了解下BigDecimal
------解决方案--------------------
double 的精度长,用二进制来处理的,你自己用二进制算,你也会算出这样的结果。
------解决方案--------------------
double float操作 ,需要注意精度的问题