Format des nombres

Request description

Bonjour,

Pour une application en anglais, j’essaie de formater les décimaux au format DC

  • point pour les milliers
  • virgule pour les décimales

Et j’ai des questions :slight_smile:

  • est-il possible de le configurer au niveau de la langue, et pas par utilisateur ? Sinon comment forcer ce format par défaut pour tous ? Par code peut-être ?
  • pour l’instant j’ai tenté le choix “DC” au niveau utilisateur et j’ai un comportement étrange sur un pourcentage : si je saisis mon pourcentage avec une virgule, la virgule disparaît quand je sors du champ - mais si je le saisis avec un point, il se transforme en virgule.

[EDIT]
Je vois que la langue est celle par défaut (EN) à la saisie, et celle surchargée sur le user au chargement du form

Load
image

Click sur le champ
image

J’ai vu qu’il y avait une évolution en 5.3, mais je ne sais pas trop comment l’utiliser.

Merci d’avance pour votre aide !
Emmanuelle

[Platform]
Status=OK
Version=6.2.20
BuiltOn=2026-01-02 22:59

Bonjour,

Pour mémoire le format DC= Dot+Comma = affiché 12.345,67 = 12345.67 en base

Comme la format des dates :

  • La langue de l’utilisateur force un format :
    • ENU = English US = CD = comma+dot = 12,345.67
    • FRA = SC = space+comma = 12 345,67
  • et surchargeable par User
  • les valeurs par défaut sont dans la liste de valeurs FORMAT par langue :

Donc il suffit de faire :

  • Une mise à jour en masse sur les User,
  • ou ajouter une contrainte ou code preSave sur la création d’un user
  • ou de forcer le format via setNumberFormat au chargement de session via PlatformHooks.postLoadGrant.

En DC sauf si quelque chose m’échappe :

  • si on tape 1.2 la UI reformatte en 12 (et pas en 1200) et enregistrera 12 en base.
  • si on tape 1,2 la UI ne fera rien et enregistrera 1.2 en base.

Les pourcentages ça dépend aussi :

  • si c’est un flottant : c’est stocké entre 0 et 1 (donc mettre une précision suffisante de 4 car par exemple 0,01% à l’écran sera stocké 0.0001 en base)
  • ou un entier : stocké pourcentage entier / de 0 à 100, pas de décimal possible.
1 Like

Merci pour ta réponse rapide, je vais automatiser la surcharge du format dans le PlatformHooks.

Pour mon test, en DC, si je saisis 1,2, quand je quitte le champ ça change en 12, et quand je save ça réapparaît en 120000,00. En base, j’ai 12.
Mais j’ai peut-être cassé quelque chose en jouant avec les types de champ :-/

Quand je clique sur le champ, formatFloat est appelé avec f.lang en paramètre (ENU)

et quand le form se charge, c’est appelé avec this.numformat (DC)

image

Ok merci pour ton debug, il doit y avoir une erreur quelque part, on va refaire des tests.
Par contre tu peux bien changer le FORMAT des DATE et des NUM par défaut par langue (cf copie ecran).

1 Like

Je dois changer la valeur de la liste de valeur ? Cela ne va pas être écrasé quand je mets à jour l’image de Simplicité ?

Le code que tu indiques concerne un BigDecimal dans un pourcentage ? Les big decimaux sont un peu particulier car sont gérés comme des “string” pour ne pas perdre de precision.
Merci de préciser la définition exacte du champ.

On ne change pas ce paramètrage par défaut pour compat ascendante de l’époque.
En général, il faut un patch pour modifier un truc systeme, ou alors il faut le déplacer de module. Enfin quelque part avec l’import des modules applicatifs / après upgrade.

Voici la définition du champ

Ok donc revient à un décimal flottant simple, un big-décimal doit mal gérer le formatage.
on va essayer de l’améliorer mais ici je ne pense pas que ce soit ton besoin.
Un double gère très bien une précision de (10,4) suffisant pour un pourcentage ?

Attention l’ALTER risque de ne pas marcher (varchar => double)

1 Like

Ah oui plus de souci avec un double, je ne sais pas pourquoi j’avais mis un big-decimal !
Merci !

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.

Parfait, on va aussi pousser la prise en compte du FORMAT.NUM pour les big-décimaux de notre côté.