Bootstrap

BigDecimal比较对比

BigDecimal是Java中用于精确计算的类,它可以用于表示任意精度的十进制数。在比较BigDecimal对象时,需要使用compareTo()方法来进行比较,而不是使用普通的比较运算符(如==、>、<等)。compareTo()方法返回一个int值,表示两个BigDecimal对象的大小关系,具体规则如下:

  • 如果两个BigDecimal对象相等,返回0;
  • 如果当前BigDecimal对象小于指定对象,返回负数;
  • 如果当前BigDecimal对象大于指定对象,返回正数。

代码如下:

import java.math.BigDecimal;

public class BigDecimalComparison {
    public static void main(String[] args) {
        BigDecimal num1 = new BigDecimal("10.5");
        BigDecimal num2 = new BigDecimal("20.75");

        int result = num1.compareTo(num2);

        if (result < 0) {
            System.out.println("num1小于num2");
        } else if (result > 0) {
            System.out.println("num1大于num2");
        } else {
            System.out.println("num1等于num2");
        }
    }
}

BigDecimal如何保留小数位?
setScale()方法是用于设置BigDecimal对象的小数位数的方法,它可以接受两个参数:要保留的小数位数和舍入模式(RoundingMode)。主要情况有以下几种:

  1. 设置小数位数并使用默认的舍入模式(RoundingMode.HALF_UP):
BigDecimal num = new BigDecimal("10.56789");
BigDecimal result = num.setScale(2); //10.57
  1. 设置小数位数并指定舍入模式为向上舍入(RoundingMode.CEILING):
BigDecimal num = new BigDecimal("10.56789");
BigDecimal result = num.setScale(2, RoundingMode.CEILING); //10.57
  1. 设置小数位数并指定舍入模式为向下舍入(RoundingMode.FLOOR):
BigDecimal num = new BigDecimal("10.56789");
BigDecimal result = num.setScale(2, RoundingMode.FLOOR); //10.56 
  1. 设置小数位数并指定舍入模式为四舍五入(RoundingMode.HALF_UP):
BigDecimal num = new BigDecimal("10.56789");
BigDecimal result = num.setScale(2, RoundingMode.HALF_UP); //10.57 
  1. 设置小数位数并指定舍入模式为向零舍入(RoundingMode.DOWN):
BigDecimal num = new BigDecimal("10.56789");
BigDecimal result = num.setScale(2, RoundingMode.DOWN); //10.56
;