package cn.iocoder.yudao.framework.common.util.bigDecimal;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Objects;

public class BigDecimalUtils {

    /**
     * 重量/体积，不足0.5按0.5加，不足1按1.0加，如收费重量3.1=实际收费重量3.5，收费重量4.51=实际收费重量5.0
     *
     * @param wv 原重量/体积
     * @return 转换对比后的重量/体积
     */
    public static BigDecimal convertWv(BigDecimal wv) {
        if (Objects.isNull(wv)){
            wv = BigDecimal.ZERO;
        }
        BigDecimal downWv = wv.setScale(0, RoundingMode.DOWN);
        if (downWv.add(new BigDecimal("0.5")).compareTo(wv) == 0){
            return wv;
        }
        BigDecimal halfAdjustWv = wv.setScale(0, RoundingMode.HALF_UP);
        if (wv.compareTo(halfAdjustWv) > 0) {
            wv = halfAdjustWv.add(new BigDecimal("0.5"));
        } else if (wv.compareTo(halfAdjustWv) < 0) {
            wv = halfAdjustWv;
        }
        return wv;
    }


    public static void main(String[] args) {
        System.out.println(convertWv(new BigDecimal("3.5")));
        System.out.println(convertWv(new BigDecimal("3.4")));
        System.out.println(convertWv(new BigDecimal("3.6")));
    }
}
