Browse Source

概率累加精度处理

zhaops 5 years ago
parent
commit
03ed5e03ab
1 changed files with 10 additions and 4 deletions
  1. 10 4
      triage-service/src/main/java/com/diagbot/facade/AIFacade.java

+ 10 - 4
triage-service/src/main/java/com/diagbot/facade/AIFacade.java

@@ -31,6 +31,7 @@ import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -116,8 +117,9 @@ public class AIFacade {
                             if (featureRate.getRate() != null && Double.valueOf(featureRate.getRate()) > 0.05d) {
                                 if (StringUtil.isNotBlank(featureRate.getExtraProperty())) {
                                     if (null != map.get(featureRate.getExtraProperty())) {
-                                        rate = map.get(featureRate.getExtraProperty())
-                                                + Double.valueOf(featureRate.getRate());
+                                        rate = BigDecimal.valueOf(map.get(featureRate.getExtraProperty()))
+                                                .add(BigDecimal.valueOf(Double.valueOf(featureRate.getRate())))
+                                                .doubleValue();
                                         map.replace(featureRate.getExtraProperty(), rate);
                                     } else {
                                         map.put(featureRate.getExtraProperty(), Double.valueOf(featureRate.getRate()));
@@ -270,7 +272,9 @@ public class AIFacade {
                     Double rate = 0d;
                     String conceptDisName = "";
                     for (SYFFeatureDTO featureDTO : entry.getValue()) {
-                        rate += Double.valueOf(featureDTO.getRate());
+                        rate = BigDecimal.valueOf(rate)
+                                .add(BigDecimal.valueOf(Double.valueOf(featureDTO.getRate())))
+                                .doubleValue();
                         conceptDisName += featureDTO.getFeatureName() + ",";
                     }
                     syfFeatureDTO.setRate(rate.toString());
@@ -318,7 +322,9 @@ public class AIFacade {
                                 .collect(Collectors.toList()));
                         Double rate = 0d;
                         for (SYFFeatureDTO feature : entry.getValue()) {
-                            rate += Double.valueOf(feature.getRate());
+                            rate = BigDecimal.valueOf(rate)
+                                    .add(BigDecimal.valueOf(Double.valueOf(feature.getRate())))
+                                    .doubleValue();
                         }
                         syfDiseaseDeptDTO.setRate(rate);
                         syfDiseaseDeptList.add(syfDiseaseDeptDTO);