1 public class Demo5_BigDecimal {
2
3 /*
4 * A: BigDecimal 概述
5 * float和double很容易丢失精度,所以为了精确地表示、计算浮点数,Java提供了BigDecimal
6 * 不可变的、任意精度的有符号十进制数。
7 * B:构造方法
8 * public BigDecimal(String val)
9 * C:成员方法
10 * public BigDecimal add(BigDecimal augend)
11 * public BigDecimal subtract(BigDecimal subtrahend)
12 * public BigDecimal multiply(BigDecimal multiplicand)
13 * public BigDecimal divide(BigDecimal divisor)
14 */
15 public static void main(String[] args) {
16 System.out.println(2.0 - 1.1); //0.8999999999999999 只能无限接近于0.9
17
18 BigDecimal b11 = new BigDecimal(2.0);
19 BigDecimal b22 = new BigDecimal(1.1);
20 System.out.println(b11.subtract(b22)); //结果为稍微精确的 0.899999999999999911182158029987476766109466552734375
21
22 BigDecimal b1 = new BigDecimal("2.0");
23 BigDecimal b2 = new BigDecimal("1.1");
24 System.out.println(b1.subtract(b2)); //通过构造传入字符串的参数时,结果为精确的 0.9
25
26 BigDecimal bd1 = BigDecimal.valueOf(2.0);
27 BigDecimal bd2 = BigDecimal.valueOf(1.1);
28 System.out.println(bd1.subtract(bd2)); //这种方式也可以得到结果为精确的 0.9
29
30 }
31
32 }