double类型的计算
一般的思维,1.003*1000=1003, 
 ..... 
 int   ofset   =   1000; 
 double   dblvalue   =   ((Number)object).doubleValue()   *   ofset; 
 ............   
 这样计算下来,我的dblvalue   的值是1002.9999999999... 
 因为在下面的计算我是format后,取到的是1002. 
 所以,想请教各位大虾们,应该通过什么样的计算,我的dblvalue值是1003,当然类型还是需要double的?
------解决方案--------------------package number;   
 import java.math.BigDecimal;   
 public class DoubleTest {   
 	/** 
 	 * @param args 
 	 */ 
 	public static void main(String[] args) { 
 		double i =1.003; 
 		double j = 1000; 
 		BigDecimal result = new BigDecimal(i).multiply(new BigDecimal(j)); 
 		System.out.println(result.setScale(0,0)); 
 	}   
 }     
 java中无法表示10的负幂,所以需要BigDecimal包装一下指定精度,楼主可以看看 
  < <Java解惑> > 这本书
------解决方案--------------------可能没办法的吧 
 1.002*1000=1002.000000000xxx,不精确的,看到的跟实际内存中保存的是不一样的, 
 1.002*1000,如果确定是整数,则自己取整,如果是1.0021*1000=1002.100000000xxx,按楼主的需求可能是要1002.1 
 如果是1.00211*1000按楼主的需求可能是1002.11,这些都是人的计算,而不是计算机的计算,所以应该做不到的吧
------解决方案--------------------BigDecimal的构造函数,其中一个构造函数以双精度浮点数作为输入,另一个以整数和换算因子作为输入,还有一个以小数的 String表示作为输入。 
 BigDecimal(double)构造函数,会在计算过程中产生舍入误差,最好用整数或String的构造函数。