5 System.out.printf("bd1 = %s after add.\n",bd1.toPlainString());
6 bd1 = bd1.multiply(bd2);
7 System.out.printf("bd1 = %s after multiply.\n",bd1.toPlainString());
8 bd1 = bd1.subtract(bd2);
9 System.out.printf("bd1 = %s after subtract.\n",bd1.toPlainString());
10 bd1 = bd1.divide(bd2, BigDecimal.ROUND_UP);
11 System.out.printf("bd1 = %s after divide.\n",bd1.toPlainString());
12 bd1 = bd1.negate();
13 System.out.printf("bd1 = %s after negate.\n",bd1.toPlainString());
14 System.out.println("The power of db2(123) is " +
bd2.pow(2).toPlainString());
15 }
16 /* 输出结果如下:
17 bd1 = 123456912.0123456890 after add.
18 bd1 = 15185200177.5185197470 after multiply.
19 bd1 = 15185200054.5185197470 after subtract.
20 bd1 = 123456911.0123456890 after divide.
21 bd1 = -123456911.0123456890 after negate.
22 The power of db2(123) is 15129
23 */
从结果中可以看出没有丢失精度。
③ 基于刻度的进位:
1 public static void main(String args[]) {
2 int decimalPlaces = 2;
3 BigDecimal bd = new BigDecimal("123456789.0123456890");
4 //始终向下舍位
5 BigDecimal bd1 = bd.setScale(decimalPlaces,
BigDecimal.ROUND_DOWN);
6 System.out.println(bd1.toString());
7 //始终向上进位
8 BigDecimal bd2 = bd.setScale(decimalPlaces, BigDecimal.ROUND_UP);
9 System.out.println(bd2.toString());
10 BigDecimal bd3 = new BigDecimal(3.14159);
11 //四舍五入
12 bd3 = bd3.setScale(3, BigDecimal.ROUND_HALF_UP);
13 System.out.println(bd3.toString());
14 }
15 /* 输出结果如下:
16 123456789.01
17 123456789.02
18 3.142
19 */
大整型对象(BigInteger)