public String pathStringToBigDecimal(String a,String b ){ BigDecimal x ; try { x=new BigDecimal(a); }catch (Exception e){ x=BigDecimal.ZERO; } BigDecimal y ; try { y=new BigDecimal(b); }catch (Exception e){ y=BigDecimal.ZERO; } BigDecimal divide = divide(subtract(x, y, 10), x, 4); divide = divide.setScale(2,BigDecimal.ROUND_DOWN); return divide.toString(); } private BigDecimal subPercent(BigDecimal a, BigDecimal b) { if (a == null) { return BigDecimal.ZERO; } return divide(subtract(a, b, 10), a, 4); } public static BigDecimal divide(BigDecimal x, BigDecimal y, int newScale) { if (x == null || BigDecimal.ZERO.equals(x)) { return BigDecimal.ZERO; } else if (y == null || BigDecimal.ZERO.equals(y)) { return BigDecimal.ZERO; } else { BigDecimal ret = x.divide(y, newScale, ROUND_MODE_DEFAULT); return ret; } } public static BigDecimal subtract(BigDecimal x, BigDecimal y, int newScale) { if (x == null || BigDecimal.ZERO.equals(x)) { if (y != null && !(BigDecimal.ZERO.equals(y))) { return y.negate().setScale(newScale, ROUND_MODE_DEFAULT); } else { return null; } } else if (y == null || BigDecimal.ZERO.equals(y)) { return x.setScale(newScale, ROUND_MODE_DEFAULT); } else { BigDecimal ret = x.subtract(y).setScale(newScale, ROUND_MODE_DEFAULT); return ret; } }
两个数据计算环比
最新推荐文章于 2024-07-19 17:37:28 发布