00076_BigDecimal

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、对于浮点数据的除法运算,和整数不同,可能出现无限不循环小数,因此需要对所需要的位数进行保留和选择舍入模式。

  

原文地址:https://www.cnblogs.com/gzdlh/p/8093401.html