1 public class Demo01 {
2
3 public static void main(String[] args) {
4
5 BigDecimal bg1=new BigDecimal(1.23);
6 //建议使用这种,因为参数为double类型时,本身就不能进行精确运算,转换后问题还在
7 BigDecimal bg2=new BigDecimal("3.54");
8 BigDecimal bg3=new BigDecimal("1.23");
9
10 //加法
11 System.out.println("不精确的---->"+bg2.add(bg1));
12 System.out.println("精确的=====>"+bg2.add(bg3));
13 //减法
14 System.out.println(bg2.subtract(bg3));
15 //乘法
16 System.out.println(bg2.multiply(bg3));
17 //除法,当不能整除时一定要有舍入模式 //第一个参数是操作数,第二个是舍入位数,第三个是舍入模式
18 System.out.println(bg2.divide(bg3,4,BigDecimal.ROUND_HALF_UP));
19
20 //超大数值运算
21 BigInteger bg4=new BigInteger("8888888888888888888888888888888888");
22 BigInteger bg5=new BigInteger("8888888888888888888888888888888888");
23 System.out.println(bg4.add(bg5));
24 System.out.println(bg4.multiply(bg5));
25
26 }
27
28 }
控制台输出结果:
不精确的---->4.769999999999999982236431605997495353221893310546875
精确的=====>4.77
2.31
4.3542
2.8780
17777777777777777777777777777777776
79012345679012345679012345679012329876543209876543209876543209876544