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();