请教大家一个基本问题,关于double奇怪问题,我用double算钱数,是不是不适合?
double   d0   =   2.00   +   0.98; 
                                     double   d1   =   2.00   +   31.98; 
                                     double   d2   =   33.98   -   d1;   
                                     System.out.println(d0); 
                                     System.out.println(d1); 
                                     System.out.println(d2);   
 输出: 
 2.98 
 33.980000000000004 
 -7.105427357601002E-15   
 请问如果我用double算钱数那么d2期望的应该是0,但实际不是,请问如何解决?
------解决方案--------------------建议用BigDecimal计算  然后再进行转化
------解决方案--------------------double d1 = 2000 + 31980; 
         double d2 = 33980 - d1; 
         double result = d2/1000;
------解决方案--------------------计算机运算是使用二进制代码进行相关的计算,而在程序中是以十进制为基础的,所以会有误差. 
 解决方法有很多。用BigDecimal并不是解决方案.下面告诉你一种解决的思想. 
 因为金额的小数位数有限,那么你完全可以将数据保存在整型中,进行输出时就缩小倍数输出
------解决方案--------------------你如果计算好了输出用(jdk1.5后)System.out.printf( "%2.2f\n ",d1);也可以的.
------解决方案--------------------up