Convertir un réel en chaîne avec toutes les décimales dans Dynamics AX 2012
Publié : 16 février 2025 à 10 h 48 min 03 s UTC
Dernière mise à jour : 12 janvier 2026 à 08 h 52 min 56 s UTC
Dans cet article, j’explique comment convertir un nombre en virgule flottante en chaîne tout en préservant toutes les décimales dans Dynamics AX 2012, y compris un exemple de code X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
Les informations contenues dans ce billet sont basées sur le Dynamics AX 2012 R3. Cela peut être valide ou non pour d’autres versions.
De temps en temps, je dois convertir un vrai nombre en chaîne. Habituellement, passer simplement à strFmt() suffit, mais cette fonction arrondit toujours à deux décimales, ce qui n’est pas toujours ce que je veux.
Ensuite, il y a la fonction num2str(), qui fonctionne bien, mais qui demande de savoir à l’avance combien de décimales et de caractères vous voulez.
Et si vous voulez simplement que le nombre soit converti en chaîne, avec tous les chiffres et décimaux? Pour une raison quelconque, c’est quelque chose qui me fait toujours chercher sur Google parce que c’est étonnamment obscur à faire et je le fais si rarement que je ne me souviens généralement plus exactement comment – dans la plupart des langages de programmation, je m’attendrais à ce qu’on puisse simplement concaténer le réel en une chaîne vide, mais X++ ne le supporte pas.
Bref, la façon la plus simple que j’ai trouvée pour faire ça, c’est d’utiliser un appel .NET. Il y a plusieurs options ici aussi, avec ou sans options de formatage avancé, mais si vous voulez simplement la conversion très simple d’un réel en chaîne, cela suffira :
Si ce code doit être exécuté sur l’AOS (par exemple dans un travail batch), n’oubliez pas d’affirmer d’abord la permission d’accès au code nécessaire. Dans ce cas, vous aurez besoin d’une InteropPermission de type ClrInterop pour appeler du code .NET, donc l’exemple complet du code ressemblerait à ceci :
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Sachez que cette simple fonction System ::Convert utilise la localisation actuelle du système par rapport au caractère de point décimal. Ce n’est peut-être pas un problème pour vous, mais pour moi qui habite dans une région où la virgule est utilisée plutôt que point comme séparateur décimal, cela peut nécessiter un traitement supplémentaire si, par exemple, la chaîne doit être utilisée dans un fichier qui doit être lisible par d’autres systèmes.
Lectures complémentaires
Si vous avez apprécié cet article, vous aimerez peut-être aussi ces suggestions :
- La différence entre data() et buf2Buf() dans Dynamics AX 2012
- Supprimer une entité juridique (comptes corporatifs) dans Dynamics AX 2012
- Utilisation d'une requête dans une classe de contrat de données SysOperation dans Dynamics AX 2012
