flowable / flowable/flowable-engine

precision loss of double/float value in dmn-engine

Aperta
#4,065 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.