BigDecimal 保留两位(自己设置)小数工具
public class BigDecimalUtil {
static int two = 2;
public static BigDecimal keepTwoDecimalPlaces(BigDecimal b) {
return ObjectUtils.isEmpty(b) ? BigDecimal.ZERO : b.setScale(two, RoundingMode.HALF_UP);
}
public static <T> BigDecimal calBdList(List<T> list, Function<? super T, BigDecimal> func) {
return CollectionUtils.isEmpty(list) ? BigDecimal.ZERO : list.stream().map(func).filter(Objects::nonNull).reduce(BigDecimal::add).orElse(BigDecimal.ZERO).setScale(two, RoundingMode.HALF_UP);
}
public static <T> T keepTwoDecimalPlaces(T t, String... names) {
Field[] fields = t.getClass().getDeclaredFields();
try {
for (Field field : fields) {
if (BigDecimal.class.equals(field.getType()) && !Arrays.toString(names.clone()).contains(field.getName())) {
field.setAccessible(true);
field.set(t, keepTwoDecimalPlaces((BigDecimal) field.get(t)));
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return t;
}
public static <T> List<T> keepTwoDecimalPlaces(List<T> list, String... names) {
for (T t : list) {
keepTwoDecimalPlaces(t, names);
}
return list;
}
}
BigDecimal 保留两位小数工具测试
BigDecimal bigDecimal = new BigDecimal("1.234567");
System.out.println(BigDecimalUtil.keepTwoDecimalPlaces(bigDecimal));
Order order = new Order();
order.setOrderaount(new BigDecimal("100.234567"));
order.setDiscountAmount(new BigDecimal("11.134"));
System.out.println(BigDecimalUtil.keepTwoDecimalPlaces(order));
Order order2 = new Order();
order2.setOrderaount(new BigDecimal("1011.12567"));
order2.setDiscountAmount(new BigDecimal("111.122"));
Order order3 = new Order();
order3.setOrderaount(new BigDecimal("100.234567"));
order3.setDiscountAmount(new BigDecimal("11.134"));
List<Order> list = new ArrayList<>();
list.add(order2);
list.add(order3);
System.out.println(BigDecimalUtil.keepTwoDecimalPlaces(list));
Order order4 = new Order();
order4.setOrderaount(new BigDecimal("1011.12567"));
order4.setDiscountAmount(new BigDecimal("111.122"));
Order order5 = new Order();
order5.setOrderaount(new BigDecimal("100.234567"));
order5.setDiscountAmount(new BigDecimal("11.134"));
List<Order> list3 = new ArrayList<>();
list3.add(order4);
list3.add(order4);
System.out.println(BigDecimalUtil.keepTwoDecimalPlaces(list3, "orderaount"));
BigDecimal 常用的方法
BigDecimal b1 = new BigDecimal("3.1415926");
System.out.println(b1);
BigDecimal b2 = new BigDecimal(3.1415926);
System.out.println(b2);
BigDecimal b3 = new BigDecimal("1.1");
BigDecimal b4 = new BigDecimal("1.1");
System.out.println(b3.add(b4));
BigDecimal b5 = new BigDecimal("4.4");
BigDecimal b6 = new BigDecimal("1.1");
System.out.println(b5.subtract(b6));
BigDecimal b7 = new BigDecimal("5");
BigDecimal b8 = new BigDecimal("8");
System.out.println(b7.multiply(b8));
BigDecimal b9 = new BigDecimal("100");
BigDecimal b10 = new BigDecimal("4");
System.out.println(b9.divide(b10));
BigDecimal b11 = new BigDecimal("110");
BigDecimal b12 = new BigDecimal("3");
System.out.println(b11.divide(b12, 4, BigDecimal.ROUND_HALF_UP));
BigDecimal b13 = new BigDecimal("-13");
System.out.println(b13.abs());
BigDecimal b14 = new BigDecimal("-10");
System.out.println(b14.negate());
BigDecimal b15 = new BigDecimal("10.123456789");
System.out.println(b15.scale());
System.out.println(b15.precision());
BigDecimal b16 = new BigDecimal("101");
BigDecimal b17 = new BigDecimal("100");
System.out.println(b17.compareTo(b16));
System.out.println(b16.compareTo(b17));
BigDecimal max = b17.max(b16);
System.out.println(max);
BigDecimal min = b17.min(b16);
System.out.println(min);