Export Excel - Decimal(100,32) versus Decimal(Double)

Bonjour,

Est-ce que l’export d’un Decimal(100,32) pourrait être identique à un Decimal (Double) : séparateur “,”
Actuellement, un decimal(100,32) est exporté avec un séparateur “.”

Cordialement,

Bonjour,

Les BigDecimal Java sont traités comme des String dans les interfaces pour ne pas perdre en précision (pas de cast en double, pas de notation exponent, ni d’API utilisant des double…).

Simplicité peut effectivement rendre homogène les exports textuels (XML, CSV…) en fonction de la langue : séparateur virgule ou point mais dans un format string(100). Rien ne garantie que Excel supporte les BigDecimal au final = il faudra rester dans un format String sinon il y aura une perte de précision irréversible = impossibilité de faire des sommes de big decimal dans excel, etc.

Un simple teste montre que Excel cast en double (exponent) un vrai big decimal, donc pourquoi ne pas modéliser un simple decimal directement (pour vos exports uniquement) si la finalité de la donnée se trouve dans Excel à un moment donné pour y faire des sommes ?

Gogol+1 =
“10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001” dans Simplicité
~= 1E+100 dans excel

Donc si le besoin est de calculer des centimes sur un nombre Gogol, il faudra utiliser autre chose que Excel…

Evol non réalisée (testé en 5.3), c’est toujours un “.” dans l’export XML.

Au passsage ce serait bien de pouvoir définir le nombre de décimales affichées plutôt que d’arronir à 2 par défaut

bd

L’export XML est particulier et doit rester avec un point “.” = format technique des virgules en informatique depuis toujours. Les décimaux ne sont pas exportés dans la langue de l’utilisateur, mais dans la langue de la machine.

Le sujet du post était l’export Excel qui comme indiqué est inadapté à gérer des BigDecimals. L’export est donc textuels. De plus Excel ne fonctionna pas pareil s’il est installé en anglais ou en français.

Je ne sais plus pourquoi la UI arrondit à 2 décimales l’affichage :

  • de mémoire c’est pour un pb d’alignement à droite sur les listes, sinon c’est illisible en colonne = il faudrait formatter avec des 000000… la partie fractionnaire mais comme on peut aller jusqu’à 32 c’est pas souhaitable en largeur
  • En formulaire ça n’a pas d’intérêt de tronquer et ça peut effectivement prêter à confusion, on va retirer l’arrondi de présentation si possible dans ce mode.

C’est trop complexe à modifier à ce stade.
A défaut de meilleur solution, le nombre maximal affiché sera de 5 décimales au lieu de 2.