Journalisation des modifications + Double (100,32) en BigDecimal

Si on fait aucune modification sur un formulaire contenant des champs double (100,32) et que l’on sauvegarde alors les valeurs avec des décimales à 0 (ex: 15,0000000) sont journalisées.

Version:
Simplicité version 4.0
patch level P24
Built on 2020-04-07 12:36

Il doit y avoir un problème de “has changed” sur un big-decimal java.
Je regarde.

C’était bien ça, fallait le trouver !

BigDecimal.equals est un faux ami.

Il retourne false si on compare par exemple 2 BigDecimals comme 15 et 15.00000000

(new BigDecimal("15")).equals(new BigDecimal("15.00000000")) = false !

On a remplacé ce test par un BigDecimal.compareTo qui fait bien la différence des 2 nombres, et retourne 0 s’ils sont égaux quelle que soit la précision des “0” du scale.

Sonar ne nous a pas prévenu ! Je suis déçu.