1、在程序中执行下列代码,会出现什么问题?
1 System.out.println(0.09 + 0.01); 2 System.out.println(1.0 - 0.32); 3 System.out.println(1.015 * 100); 4 System.out.println(1.301 / 100);
(1)double和float类型在运算中很容易丢失精度,造成数据的不准确性;
(2)Java提供我们BigDecimal类可以实现浮点数据的高精度运算。
2、建议浮点数据以字符串形式给出,因为参数结果是可以预知的。
3、加、减、乘
1 public static void main(String[] args) { 2 //大数据封装为BigDecimal对象 3 BigDecimal big1 = new BigDecimal("0.09"); 4 BigDecimal big2 = new BigDecimal("0.01"); 5 //add实现加法运算 6 BigDecimal bigAdd = big1.add(big2); 7 8 BigDecimal big3 = new BigDecimal("1.0"); 9 BigDecimal big4 = new BigDecimal("0.32"); 10 //subtract实现减法运算 11 BigDecimal bigSub = big3.subtract(big4); 12 13 BigDecimal big5 = new BigDecimal("1.105"); 14 BigDecimal big6 = new BigDecimal("100"); 15 //multiply实现乘法运算 16 BigDecimal bigMul = big5.multiply(big6);
4、对于浮点数据的除法运算,和整数不同,可能出现无限不循环小数,因此需要对所需要的位数进行保留和选择舍入模式。