BigDecimal math1 = new BigDecimal(10000000.12); BigDecimal math2 = new BigDecimal(20000000.23);
System.out.println(math1);
System.out.println(math2); System.out.println(math1.add(math2));公司是做金融项目的,大额数字不应该用double类型,但是用BigDecimal却出现了这样的结果:10000000.11999999918043613433837890625
20000000.2300000004470348358154296875
30000000.34999999962747097015380859375为什么?该如何用?
MathContext mc = new MathContext(10);
BigDecimal math1 = new BigDecimal(10000000.12,mc);
System.out.println(math1);
//MathContext设置指定的精度,也就是出现的数字的个数,此方法仅限于小数点以前固定长度的,不是很好
建议用2楼的方法,用字符串形式的
float和double只能用来做科学计算或者是工程计算,
在商业计算中我们要用java.math.BigDecimal。