工作中遇到了优惠券平分每个人,百度了一下,发现都很复杂,于是自己记录了一下
public static void main(String[] args) {
//优惠券金额,按分计算
int subtractMoney = 500;
//用户人数
int passengerNumber=3;
//每个用户平均优惠券金额
BigDecimal passengerAmount = BigDecimal.ZERO;
//平分后余数
BigDecimal surplusAmount = BigDecimal.ZERO;
if (subtractMoney > 0) {//优惠券金额,平均分配给每个用户
BigDecimal[] divideAndRemainder = BigDecimal.valueOf(subtractMoney).divideAndRemainder(BigDecimal.valueOf(passengerNumber));
//divideAndRemainder 数组的第一个值为商,第二个值为余数
passengerAmount = divideAndRemainder[0];
surplusAmount = divideAndRemainder[1];
}
System.out.println(surplusAmount);
System.out.println(passengerAmount);
System.out.println("================");
for (int i = 0; i < passengerNumber; i++) {
if (surplusAmount.compareTo(BigDecimal.ZERO) == 1) {
System.out.println(passengerAmount.add(BigDecimal.valueOf(1)));
surplusAmount = surplusAmount.subtract(BigDecimal.valueOf(1));
} else {
System.out.println(passengerAmount);
}
}
}