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