解决精度问题
This commit is contained in:
@@ -1080,11 +1080,13 @@ public class DetectionServiceImpl {
|
||||
BigDecimal.valueOf(1.0 / data * (channelData + errSysDtl.getMaxErrorValue())))
|
||||
).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(qualifiedList)) {
|
||||
Double a = qualifiedList.get(0) - (1.0 / data * (channelData - errSysDtl.getMaxErrorValue()));
|
||||
detectionData.setErrorData(BigDecimal.valueOf(Math.abs(a)));
|
||||
BigDecimal subtract = BigDecimal.valueOf(qualifiedList.get(0))
|
||||
.subtract(BigDecimal.valueOf(1.0 / data * (channelData - errSysDtl.getMaxErrorValue())));
|
||||
detectionData.setErrorData(subtract);
|
||||
} else {
|
||||
Double a = list.get(0) - (1.0 / data * (channelData - errSysDtl.getMaxErrorValue()));
|
||||
detectionData.setErrorData(BigDecimal.valueOf(Math.abs(a)));
|
||||
BigDecimal subtract = BigDecimal.valueOf(list.get(0))
|
||||
.subtract(BigDecimal.valueOf(1.0 / data * (channelData - errSysDtl.getMaxErrorValue())));
|
||||
detectionData.setErrorData(subtract);
|
||||
}
|
||||
isData(dataRule, qualifiedList, detectionData, qualifiedList);
|
||||
}
|
||||
@@ -1142,18 +1144,19 @@ public class DetectionServiceImpl {
|
||||
* @return
|
||||
*/
|
||||
public BigDecimal devSubtractChannelData(Double devData, Double channelData, Integer errorValueType) {
|
||||
if (devData - channelData != 0) {
|
||||
BigDecimal subtract = BigDecimal.valueOf(devData).subtract(BigDecimal.valueOf(channelData));
|
||||
if (subtract.doubleValue() != 0) {
|
||||
switch (errorValueType) {
|
||||
case 2:
|
||||
//下发的谐波电压幅值,返回的是谐波电压含有率,拿(含有率值*基波 - 源下发对应谐波值幅值)/下发的幅值
|
||||
return BigDecimal.valueOf(devData - channelData)
|
||||
return subtract
|
||||
.divide(BigDecimal.valueOf(channelData), 4, RoundingMode.HALF_UP);
|
||||
case 3:
|
||||
//下发的谐波电压幅值,返回的是谐波电压含有率,拿(含有率值*基波 - 源下发对应谐波值幅值)/装置返回值
|
||||
return BigDecimal.valueOf(devData - channelData)
|
||||
return subtract
|
||||
.divide(BigDecimal.valueOf(devData), 4, RoundingMode.HALF_UP);
|
||||
}
|
||||
return BigDecimal.valueOf(devData - channelData);
|
||||
return subtract;
|
||||
}
|
||||
return BigDecimal.valueOf(0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user