Java 使用BigDecimal进行高精度加减乘除

有时候我们计算金钱或者其他一些计算的时候需要高精度的计算加减乘除,可以使用BigDecimal

BigDecimal num1 = new BigDecimal("100.569");
BigDecimal num2 = new BigDecimal("50.799");
BigDecimal data = num1.add(num2);
String result = String.valueOf(data);
System.out.println(result);//输出151.368

 BigDecimal num1 = new BigDecimal("100.569");
 BigDecimal num2 = new BigDecimal("50.799");
 BigDecimal data = num1.subtract(num2);
 String result = String.valueOf(data);
 System.out.println(result);//输出49.770

 BigDecimal num1 = new BigDecimal("100.569");
 BigDecimal num2 = new BigDecimal("50.799");
 BigDecimal data = num1.multiply(num2);
 String result = String.valueOf(data);
 System.out.println(result);//输出5108.804631

 BigDecimal num1 = new BigDecimal("100.569");
 BigDecimal num2 = new BigDecimal("50.799");
 BigDecimal data = num1.divide(num2,5, RoundingMode.HALF_UP);//商保留5位小数
 String result = String.valueOf(data);
 System.out.println(result);//输出1.97974

四舍五入保留小数位数

BigDecimal number = new BigDecimal("11.02156");
//四舍五入保留小数点后3位数
BigDecimal data = number.setScale(3, RoundingMode.HALF_UP);
String result = String.valueOf(data);
System.out.println(result);//输出11.022

绝对值

BigDecimal num1 = new BigDecimal("-11.33");
BigDecimal num1Abs =  num1.abs();
System.out.println(num1Abs);//11.33

最大值与最小值

BigDecimal num1 = new BigDecimal("33.33");
BigDecimal num2 = new BigDecimal("22.33");
//获取 num1 和 num2 中的最大值
BigDecimal max =  num1.max(num2);
System.out.println(max);//33.33
BigDecimal num1 = new BigDecimal("33.33");
BigDecimal num2 = new BigDecimal("22.33");
//获取 num1 和 num2 中的最小值
BigDecimal min =  num1.min(num2);
System.out.println(min);//22.33

比较大小

使用 compareTo 可以比较大小,-1 则 num1 小于 num2,0 则等于,1 则大于

 BigDecimal num1 = new BigDecimal("100.569");
 BigDecimal num2 = new BigDecimal("50.799");
 if (num1.compareTo(num2 ) < 0) {
     System.out.println("num1小于num2");
 }
 if (num1.compareTo(num2 ) == 0) {
     System.out.println("num1等于num2");
 }
 if (num1.compareTo(num2 ) > 0) {
     System.out.println("num1大于num2");
 }

初始化

BigDecimal提供了0、1、10 这三个数的默认值创建:

BigDecimal num1 =  BigDecimal.ZERO;
BigDecimal num2 =  BigDecimal.ONE;
BigDecimal num2 =  BigDecimal.TEN;

下面的代码和上面的代码是等价的:

 BigDecimal num1 = new BigDecimal("0");
 BigDecimal num2 = new BigDecimal("1");
 BigDecimal num2 = new BigDecimal("10");

参考:
DecimalFormat的使用
DecimalFormat除法

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值