java中double数据保留有效位数

数据保留至有效位数,有时候这是一个很不好解决的问题。平时我们的需求很多都是希望把数据保留至小数点后一位,但是我们计算的时候就会发现很多数据变成,譬如0.017保留小数点后一位就变成0.0了,但是我们自动应该把它变成0.02才是正确的。所以自己写了一个解决办法可以将数据自动保留至数据有效的位数

	private final static Integer NUMDOUBLE = 1;

    public static Double keepDouble(Double f){
        /*1.先判断当前数据是否为0*/
        Integer zeroRe = MathCal.compare(f, 0.0);
        switch (zeroRe) {
            case 1 : /*数据为0,直接将数据保留小数点后一位*/
                return new BigDecimal(f).setScale(NUMDOUBLE, BigDecimal.ROUND_HALF_UP).doubleValue();
            default: /*数据不为0,将数据保留至有效位数*/
                Integer digits = KeepDecimals.NUMDOUBLE;/*将数据设置默认其实保留小数点后一位*/
                Integer re = KeepDecimals.keepDouble(f, digits, 0);/*先对数据进行小数点后一位保留,与0判断结果是否为0*/
                while(re == 1){
                    digits++;
                    re = KeepDecimals.keepDouble(f, digits, 0);
                }
                return new BigDecimal(f).setScale(digits, BigDecimal.ROUND_HALF_UP).doubleValue();
        }

    }
    原文作者:xuxu1116
    原文地址: https://blog.csdn.net/weixin_43228814/article/details/108464620
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞