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 }