package util;
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
/**
* 百分比-提成相关计算
*
* @Author xiyan
* @Date 2020/6/17
* @Version 1.0
*/
@Slf4j
public class PercentUtil {
/**
* 百分比转long类型(存数据库)
*
* @param percent 百分比最多两位小数
* @return
*/
public static Long setData(BigDecimal percent) {
if (percent.scale() > 2) {
throw new CustomException("百分比最多输入2位小数");
}
return percent.divide(BigDecimal.valueOf(100)).multiply(BigDecimal.valueOf(10000)).longValue();
}
/**
* long类型转百分比(页面显示)
*
* @param percent
* @return
*/
public static BigDecimal getData(Long percent) {
return BigDecimal.valueOf(percent).divide(BigDecimal.valueOf(10000)).multiply(BigDecimal.valueOf(100)).setScale(2);
}
/**
* 计算提成
*
* @param price 订单价
* @param percent 百分比
* @return
*/
public static BigDecimal getRoyalty(Integer price, Long percent) {
return BigDecimal.valueOf(percent).divide(BigDecimal.valueOf(10000)).multiply(BigDecimal.valueOf(price)).setScale(2);
}
public static void main(String[] args) {
//传入值,存数据库
log.debug(">>" + setData(BigDecimal.valueOf(0.05)));
log.debug(">>" + getData(Long.valueOf(5)));
//数据库取值,显示页面
log.debug(">>" + setData(BigDecimal.valueOf(0.5)));
log.debug(">>" + getData(Long.valueOf(50)));
//提成
log.debug(">>" + getRoyalty(200, Long.valueOf(5)));
//非法输入
log.debug(">>" + setData(BigDecimal.valueOf(0.005)));
}
}
百分比提成工具类
最新推荐文章于 2022-04-21 13:44:07 发布