读书人

String转double的有关问题

发布时间: 2012-11-01 11:11:31 作者: rapoo

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

读书人网 >J2SE开发

热点推荐