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

String转double的问题
1、String str = "199.45"
  Double.parseDouble( str );
  结果不是199.45,而是199.4499999999999990
2、a=19 , b=99.63;
  c = a*b
  结果不是1892.97,而是1892.96999999999998

这是怎么回事呢?

------解决方案--------------------
要精确计算的时候不要使用float和double,是近似值
DecimalFormat dc = new DecimalFormat();
double num = (Double)dc.parse(s);

BigDecimal bd1 = new BigDecimal(Integer.toString(a));
BigDecimal bd2 = new BigDecimal(Double.toString(b));
double c = bd1.multiply(bd2).doubleValue();