/**
* 算最后的分数
* num本来的数
* times多少次扣一次分
* weight一次扣多少分
* @param num
* @param times
* @param weight
* @return
*/
public static BigDecimal countScore(BigDecimal num,BigDecimal times,BigDecimal weight){
//times为多少次减weigth分
BigDecimal bai= BigDecimal.valueOf(100);
BigDecimal scoreSum=bai.divide(weight,0,BigDecimal.ROUND_HALF_UP);
//多少次扣分,向上取整后减一
BigDecimal numSum=num.divide(times,0,BigDecimal.ROUND_UP).subtract(BigDecimal.valueOf(1));
//如果为减的为负数和0则直接返回100
if(numSum.compareTo(BigDecimal.valueOf(0))<=0){
return bai;
}
if(numSum.compareTo(scoreSum)>=0){
//全减了
return new BigDecimal(0);
}
else {
return bai.subtract(numSum.multiply(weight));
}
}
权重扣分计算算法
于 2024-11-05 11:26:42 首次发布