Quellcode durchsuchen

公式-换算值
1、计算平均值 精度问题处理

LHB vor 2 Wochen
Ursprung
Commit
ca407f199a

+ 2 - 2
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -3172,7 +3172,7 @@ public class CustomFunction {
                     //分割字符串
                     String[] split = surveyDepthStr.split(surveyDepthStr.contains(",") ? "," : "、");
                     //计算平均值
-                    h = Arrays.stream(split).filter(StringUtils::isNumber).map(StringUtils::handleNull).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(split.length), 3, RoundingMode.HALF_UP).doubleValue();
+                    h = Arrays.stream(split).filter(StringUtils::isNumber).map(StringUtils::handleNull).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(split.length), 10, RoundingMode.HALF_UP).doubleValue();
                     h = h * 2;
                     //进行0.5修正
                     h = roundHalfEven(new BigDecimal(h).setScale(1, RoundingMode.HALF_UP).doubleValue(), 1);
@@ -3185,7 +3185,7 @@ public class CustomFunction {
                         //分割字符串
                         String[] split = string.split(string.contains(",") ? "," : "、");
                         //计算平均值
-                        double avg = Arrays.stream(split).filter(StringUtils::isNumber).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(split.length), 3, RoundingMode.HALF_UP).doubleValue();
+                        double avg = Arrays.stream(split).filter(StringUtils::isNumber).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(split.length), 10, RoundingMode.HALF_UP).doubleValue();
                         avg = avg * 2;
                         avg = roundHalfEven(new BigDecimal(avg).setScale(1, RoundingMode.HALF_UP).doubleValue(), 1);
                         avg = avg / 2;