flowable / flowable/flowable-engine
precision loss of double/float value in dmn-engine
- Vorherrschende Sprache
- Java
- Sterne
- 9.5k
- Forks
- 2.9k
- Ø Merge
- 7 Std. 8 Min.
- Gemergte PRs (30 T.)
- 2
Beschreibung
Description:
Using double/float input data to execute a dmn decision table, the double/float input got prevcision loss。
Version:
Flowable Version: 6.5.0
Code:
code snippet in ELExecutionContextBuilder.java
```
} else if (inputVariableValue instanceof Double ) {
BigDecimal transformedNumber = new BigDecimal((Double) inputVariableValue);
inputVariables.put(inputVariableName, transformedNumber);
} else if (inputVariableValue instanceof Float) {
double doubleValue = Double.parseDouble(inputVariableValue.toString());
BigDecimal transformedNumber = new BigDecimal(doubleValue);
inputVariables.put(inputVariableName, transformedNumber);
}
```
Additional comments:
i think the best way is using BigDecimal.valueOf(val) or new BigDecimal(Double.toString(val))
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne in ELExecutionContextBuilder.java und verfolge, wie Double- und Float-Eingaben vor der Ausführung der DMN-Entscheidungstabelle konvertiert werden. Reproduziere den gemeldeten Präzisionsverlust mit repräsentativen Double-/Float-Werten und überprüfe anschließend, dass die resultierende Entscheidungsauswertung den beabsichtigten Dezimalwert beibehält.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 45/100