|
|
@@ -3173,8 +3173,10 @@ public class CustomFunction {
|
|
|
String[] split = surveyDepthStr.split(surveyDepthStr.contains(",") ? "," : "、");
|
|
|
//计算平均值
|
|
|
h = Arrays.stream(split).filter(StringUtils::isNumber).map(StringUtils::handleNull).mapToDouble(Double::parseDouble).average().orElse(0.0);
|
|
|
+ h = h * 2;
|
|
|
//进行0.5修正
|
|
|
h = roundHalfEven(new BigDecimal(h).setScale(1, RoundingMode.HALF_UP).doubleValue(),1);
|
|
|
+ h = h / 2;
|
|
|
}else{
|
|
|
List<Object> surveyDepthList = obj3ListNe(surveyDepth);
|
|
|
List<Double> doubleArrList = new ArrayList<>();
|
|
|
@@ -3184,12 +3186,17 @@ public class CustomFunction {
|
|
|
String[] split = string.split(string.contains(",") ? "," : "、");
|
|
|
//计算平均值
|
|
|
double avg = Arrays.stream(split).filter(StringUtils::isNumber).map(StringUtils::handleNull).mapToDouble(Double::parseDouble).average().orElse(0.0);
|
|
|
- doubleArrList.add(roundHalfEven(new BigDecimal(avg).setScale(1, RoundingMode.HALF_UP).doubleValue(),1));
|
|
|
+ avg = avg * 2;
|
|
|
+ avg = roundHalfEven(new BigDecimal(avg).setScale(1, RoundingMode.HALF_UP).doubleValue(),1);
|
|
|
+ avg = avg / 2;
|
|
|
+ doubleArrList.add(avg);
|
|
|
});
|
|
|
//结果再计算平均值
|
|
|
h = doubleArrList.stream().mapToDouble(Double::doubleValue).average().orElse(0.0);
|
|
|
- //在进行修正
|
|
|
+ h = h * 2;
|
|
|
+ //进行0.5修正
|
|
|
h = roundHalfEven(new BigDecimal(h).setScale(1, RoundingMode.HALF_UP).doubleValue(),1);
|
|
|
+ h = h / 2;
|
|
|
}
|
|
|
|
|
|
//是否泵送
|
|
|
@@ -3238,7 +3245,8 @@ public class CustomFunction {
|
|
|
// 获取小数部分
|
|
|
BigDecimal integerPart = new BigDecimal(bd.toBigInteger().toString());
|
|
|
BigDecimal decimalPart = bd.subtract(integerPart);
|
|
|
-
|
|
|
+ //整数部分
|
|
|
+ BigDecimal bigDecimal = bd.setScale(0, RoundingMode.DOWN);
|
|
|
// 如果小数部分为0,直接返回
|
|
|
if (decimalPart.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
return number;
|
|
|
@@ -3252,13 +3260,41 @@ public class CustomFunction {
|
|
|
|
|
|
if (firstDigit < 5) {
|
|
|
// 小数位数小于5,改成5
|
|
|
- return integerPart.add(new BigDecimal("0.5")).doubleValue();
|
|
|
+ return bigDecimal.doubleValue();
|
|
|
} else if (firstDigit > 5) {
|
|
|
// 小数位数大于5,四舍五入到整数
|
|
|
return bd.setScale(0, RoundingMode.HALF_UP).doubleValue();
|
|
|
} else {
|
|
|
- // 等于5,不变
|
|
|
- return number;
|
|
|
+ //小数部分乘以10,获取之后的小数位数
|
|
|
+ BigDecimal bigDecimal1 = decimalPart.multiply(BigDecimal.TEN);
|
|
|
+ BigDecimal integerPart2 = new BigDecimal(bigDecimal1.toBigInteger().toString());
|
|
|
+ BigDecimal decimalPart2 = bigDecimal1.subtract(integerPart2);
|
|
|
+
|
|
|
+
|
|
|
+ //对整数仅以
|
|
|
+ double v = bigDecimal.add(BigDecimal.valueOf(1)).doubleValue();
|
|
|
+ //如果==0,就按照最开始的整数部分奇偶来计算 奇进偶退
|
|
|
+ if (decimalPart2.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ //奇数
|
|
|
+ if(!isEven(bigDecimal)){
|
|
|
+ return v;
|
|
|
+ } else {
|
|
|
+ return bigDecimal.doubleValue();
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ return v;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public static boolean isEven(BigDecimal number) {
|
|
|
+ // 检查是否为整数
|
|
|
+ if (number.scale() > 0 && number.stripTrailingZeros().scale() > 0) {
|
|
|
+ throw new IllegalArgumentException("只能判断整数的奇偶性");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用 remainder() 方法计算除以2的余数
|
|
|
+ BigDecimal remainder = number.remainder(BigDecimal.valueOf(2));
|
|
|
+ return remainder.compareTo(BigDecimal.ZERO) == 0;
|
|
|
+ }
|
|
|
}
|