【类中BigDecimal批量处理工具】

该博客介绍了在开发中遇到的大数计算导致小数位数过多的问题,作者仿照Spring框架的源码,创建了一个通用的转换类。此转换类能遍历对象的所有属性,如果发现属性是BigDecimal类型,就将其小数位数调整到指定值,使用了setScale方法并设置ROUND_HALF_UP模式,确保了数值计算的精度和显示的简洁性。
摘要由CSDN通过智能技术生成

之前开发时因为对象里有很多属性是大数,最后计算完小数位数太多,这里仿照spring框架里面的源码,写了一个通用转换类,判断属性类型是BigDecimal的话,会对其位数进行处理。

 

 /**
     *
     * @param target   要操作的对象
     * @param digits  保留的小数位数
     * @throws InvocationTargetException
     * @throws IllegalAccessException
     */
    public static void flashDigits(Object target,Integer digits) throws InvocationTargetException, IllegalAccessException {
        Class<?> actualEditable = target.getClass();
        PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable);
        for (PropertyDescriptor targetPd : targetPds) {
            Method writeMethod = targetPd.getWriteMethod();
            Method readMethod = targetPd.getReadMethod();
            if (writeMethod != null && readMethod != null) {
                Object value = readMethod.invoke(target);
                if (value instanceof BigDecimal) {
                    BigDecimal b = (BigDecimal) value;
                    b = b.setScale(digits, BigDecimal.ROUND_HALF_UP);
                    writeMethod.invoke(target, b);
                }

            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值