diff --git a/mallinkService/src/main/java/com/iformall/utils/PressUtils.java b/mallinkService/src/main/java/com/iformall/utils/PressUtils.java index 8cc19ddb5..45fd75dc7 100755 --- a/mallinkService/src/main/java/com/iformall/utils/PressUtils.java +++ b/mallinkService/src/main/java/com/iformall/utils/PressUtils.java @@ -30,7 +30,7 @@ public class PressUtils { BigDecimal lt = BigDecimal.valueOf(left_total* 1.0D / 100); StatelessReduceRule rule = new DefaultStatelessReduceRule(); BigDecimal current = rule.getReduce(tt, lt, limit_num,limit_num - limit_index, scale); - return current.intValue() * 100; + return current.multiply(BigDecimal.valueOf(100)).intValue(); } /** @@ -46,13 +46,11 @@ public class PressUtils { BigDecimal lt = BigDecimal.valueOf(left_total* 1.0D / 100); StatelessReduceRule rule = new StatelessPingReduceRule(); BigDecimal current = rule.getReduce(tt, lt, limit_num, limit_num - limit_index, scale); - return current.intValue() * 100; + return current.multiply(BigDecimal.valueOf(100)).intValue(); } public static void main(String[] args) { - int IValue = randomPressValue(2000, 300, 5, 4); - System.out.println(IValue); - int iValue = stateLessPressValue( 2000, 400, 5, 4); + int iValue = stateLessPressValue( 2000, 2000, 5, 0); System.out.println(iValue); } diff --git a/mallinkService/src/main/java/com/iformall/utils/press/stateless/StatelessPingReduceRule.java b/mallinkService/src/main/java/com/iformall/utils/press/stateless/StatelessPingReduceRule.java index fa943411b..fe0679f33 100644 --- a/mallinkService/src/main/java/com/iformall/utils/press/stateless/StatelessPingReduceRule.java +++ b/mallinkService/src/main/java/com/iformall/utils/press/stateless/StatelessPingReduceRule.java @@ -18,8 +18,10 @@ public class StatelessPingReduceRule implements StatelessReduceRule { if (totalReduceTimes == 1) { return totalReduce; } + // 前1/3的人 + Double thirdDeduceTimesD = Math.ceil(totalReduceTimes * 1.0D/ 3); + int firstN = Math.max(thirdDeduceTimesD.intValue(), 1); - int firstN = Math.max(totalReduceTimes / 3, 1); // 前1/3的人 BigDecimal halfReduce = totalReduce.divide(BigDecimal.valueOf(2), RoundingMode.HALF_EVEN).setScale(scale, RoundingMode.HALF_EVEN); int leftN = totalReduceTimes - firstN; BigDecimal theOtherHalf = totalReduce.subtract(halfReduce);