flowable / flowable/flowable-engine
precision loss of double/float value in dmn-engine
- Lingua principale
- Java
- Stelle
- 9.5k
- Fork
- 2.9k
- Merge medio
- 7h 8m
- PR unite (30g)
- 2
Descrizione
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))
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia da ELExecutionContextBuilder.java e traccia come gli input Double e Float vengono convertiti prima dell’esecuzione della tabella decisionale DMN. Riproduci la perdita di precisione segnalata con valori rappresentativi double/float, quindi verifica che la valutazione della decisione risultante mantenga il valore decimale previsto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java
- Ambito
- backend
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 45/100