flowable / flowable/flowable-engine

precision loss of double/float value in dmn-engine

Offen
#4,065 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.