【类中BigDecimal批量处理工具】

  • Post author:
  • Post category:其他


之前开发时因为对象里有很多属性是大数,最后计算完小数位数太多,这里仿照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);
                }

            }
        }
    }



版权声明:本文为krls_shany原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。