MENU
    Nombres et précision numérique
    • 06 Feb 2025
    • 5 Minutes à lire
    • Contributeurs

    Nombres et précision numérique


    Résumé de l’article

    :::(Info)Following Release 306, Tulip is changing the way numbers are stored in Tables and Completion Records to support capturing, storing, and displaying trailing zeros.
    :::

    Le type de données Number est un nombre réel (i.e. 53, 700, 506.2, 7.645). La précision numérique de Tulip permet aux nombres de contenir des zéros de fin (par exemple 1,90, 7,300, 36,850, 419,38910).

    Détails de la précision numérique

    Les donnéesd'entrée du numéro conservent leszéros de fin Les données de l**'opérateur**saisies par le biais du {{glossaire.Entrée}} du numéro conservent les zéros de fin lors du stockage et de l'affichage dans tout l'écosystème Tulip - jusqu'à 20 chiffres après la décimale. Les entrées de plus de 20 chiffres seront arrondies au 20e chiffre le plus proche. Les données de tableau sont stockées dans un nouveau type de données précis appelé Postgres Decimal - à la place des flottants.

    Les données d'enregistrement des tableauxaffichent tous les chiffres après les décimalesLestableauxaffichent tous les chiffres après la décimale avec une ellipse à la largeur de la colonne. La limitation précédente de l'interface utilisateur n'affichait que les trois premiers chiffres dans la vue en grille. Pour afficher tous les chiffres après la décimale, cliquez sur l'enregistrement du tableau.

    Lesentrées de nombres et les expressions peuvent contrôler les chiffres jusqu'aux décimales souhaitées. Les constructeurs d'applicationspeuvent spécifier et imposer des chiffres sur les entrées et les calculs via:* Une règle de validation des entrées de nombres pour définir le nombre exact de décimales.

    Number input validation for decimals{Une règle de validation des entrées de nombres pour définir le nombre exact de décimales.}

    • Des expressions pour gérer les décimales des entrées externes (c'est-à-dire les connecteurs, les appareils, les machines, les widgets personnalisés) et effectuer des calculs mathématiques. Ces expressions comprennent ROUND() et GETDECIMALPLACES().
    • Une nouvelle expression, TOPLAINTEXT(), émet des décimales avec une précision totale.

    Pour en savoir plus sur ces expressions, consultez la section ci-dessous : Expressions pour gérer la précision.

    Limites et comportement hors limites

    Valeur maximale : JS MAX SAFE INT* Il s'agit de la valeur maximale standard pour les données numériques en Javascript * Gestion des dépassements de limites dans l'API des tables de tulipes : Les données entrantes plus grandes que cette valeur soulèveront une erreur et ne seront pas stockées.

    Nombre maximum de chiffres après la décimale : 20* C'est plus que le nombre de chiffres dans les flottants (auparavant Tulip supportait 15 chiffres), et englobe tous les cas d'utilisation connus.* Tulip Tables API out of bounds handling : Les données entrantes comportant plus de 20 chiffres seront arrondies au 20ème chiffre le plus proche.

    Comment la précision numérique fonctionne-t-elle avec les autres fonctionnalités de Tulip ?

    Les données d'entrée avec des zéros de fin ne s'appliquent qu'aux entrées de nombres dans les applications. Les autres flux de données dans Tulip gèrent la précision numérique différemment :

    Données externes

    Les données provenant des Connecteurs, Machines, Appareils et Widgets personnalisés sont toujours envoyées sous forme de chaînes ou de flottants, cela dépend du type de données fourni par la source. Les données numériques sont converties en décimales Postgres lors de leur stockage dans les tables Tulip et les enregistrements de complétion.

    Automatismes

    Les Automations prendront en charge les zéros de fin dans le courant de l'année 2025. Actuellement, les automates qui effectuent des calculs ne stockent pas les zéros de fin.

    Expressions pour gérer la précision

    Les concepteurs d'applications peuvent gérer les chiffres lorsqu'ils sont stockés dans Tulip avec l'expression suivante.

    ROUND()

    Utilisez ROUND() pour spécifier le nombre de décimales souhaité et ajoutez des zéros avant de stocker la valeur.:::(Internal) (Private notes)
    insert screenshot of example expression]
    :::

    Les concepteurs d'applications peuvent gérer les chiffres lorsqu'ils effectuent des calculs mathématiques, y compris les moyennes et les sommes, à l'aide des expressions suivantes.

    GETDECIMALPLACES() et ROUND()

    Utilisez GETDECIMALPLACES() et/ou ROUND() pour gérer les décimales dans les résultats des calculs.

    TOPLAINTEXT()

    Utilisez TOPLAINTEXT() au lieu de TOTEXT() pour voir toutes les décimales de précision d'une valeur numérique, y compris les zéros de fin. En effet, TOTEXT() conserve une implémentation rétrocompatible permettant d'afficher des décimales précises sous forme de nombres Javascript (c.-à-d. des flottants) avec au plus 16 chiffres de précision.

    Détails techniques

    • Dans le cadre de cette version, les tables et les complétions de Tulip sont passées des "flottants" aux décimales précises de Postgres, qui sont configurées pour stocker jusqu'à 20 chiffres après la décimale.
    • Les données numériques entrantes provenant de toutes les sources (i.e. Apps, API Tulip Table, Connecteurs, etc.) sont stockées dans les Tables Tulip en tant que décimales Postgres et seront arrondies à un maximum de 20 chiffres lors du stockage.

    Données historiques

    Les données collectées avant la version 306 ont été complètement préservées, en gardant les mêmes valeurs numériques. Toutes les nouvelles données entrantes sont arrondies à 20 chiffres après la virgule.

    Modifications mineures

    Il y a quelques changements et mises en garde dans la façon dont les nombres sont traités dans les applications après le déploiement de la précision des nombres, en raison des différences entre les décimales et les flottants :

    1. Expressions : Javascript NaN et Infinity n'existent pas dans les nombres décimaux précis - en conséquence, les Expressions lèveront désormais une erreur dans les cas d'erreur mathématique (par exemple, prendre la racine carrée d'un nombre négatif ou diviser par 0). a. Cela signifie que les concepteurs d'applications devront peut-être mettre à jour toute logique de cas spécial qui fonctionne avec JS NaN et Infinity. Il ne s'agit pas d'une interface supportée, et nous ne conseillons pas de l'utiliser pour naviguer dans les cas mathématiques dans vos applications.
    2. Déclencheurs : Show Message utilise désormais les guillemets pour envelopper les nombres a. Cela signifie que vous serez désormais en mesure d'afficher des zéros de fin dans Show Message.
    3. Tables : Les exportations CSV affichent désormais les nombres complets (supérieurs à 1e6) - auparavant, le CSV utilisait la notation exponentielle pour les grands nombres (supérieurs à 1e6).a. Cela signifie que vos administrateurs devront peut-être mettre à jour les scripts de traitement CSV pour supprimer les cas spéciaux de traitement des exponentielles, s'ils en avaient.
    4. Expressions : TOTEXT & représentation des nombres - Si vous avez besoin de préserver les zéros de fin dans la représentation textuelle, utilisez une nouvelle expression TOPLAINTEXT() qui met les nombres entre guillemets pour préserver les zéros de fin.a. Expressions : TOTEXT() ne met pas les nombres entre guillemets et ne préserve donc pas les zéros de fin de ligne. Utilisez plutôt la nouvelle expression TOPLAINTEXT() pour afficher le nombre complet avec les zéros de fin, entre guillemets.b. Nous introduisons TOPLAINTEXT() en tant que nouvelle expression afin de préserver la compatibilité ascendante pour les applications qui utilisaient l'expression TOTEXT().

    Si vous avez des questions sur l'utilisation de la précision des nombres, contactez votre CSM ou postez un message dans le fil de discussion de la communauté.


    Cet article vous a-t-il été utile ?