面试问题:使用java的什么数据类型,处理2000000000.16,与16.23相加,并输出最后的结果?
不推荐:double p1 = 2000000000.16 ; double p2 = 16.23 ;
double sum = p1+p2 ; sum :2.000000000 sum: 2.00000001639E9 (E9: 10的9次方)
推荐:
//BigDecimal
BigDecimal price1 = new BigDecimal(2000000000.16);
BigDecimal price2 = new BigDecimal(16.23);
BigDecimal sum = price1.add(price2);
//DecimalFormat df = new DecimalFormat("0.00");
//String format = df.format(sum);
//四舍五入
BigDecimal bigDecimal = sum.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("bigDecimal\t"+bigDecimal);