Converteix un real a cadena amb tots els decimals al Dynamics AX 2012
Publicat: 5 de març del 2025, a les 19:29:54 UTC
Última actualització: 12 de gener del 2026, a les 8:52:52 UTC
En aquest article, explico com convertir un nombre de coma flotant en una cadena conservant tots els decimals al Dynamics AX 2012, inclòs un exemple de codi X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
La informació d'aquesta publicació es basa en el Dynamics AX 2012 R3. Pot ser vàlida o no per a altres versions.
De tant en tant, necessito convertir un nombre real en una cadena. Normalment, només cal passar-ho a strFmt() perquè no hi hagi res més, però aquesta funció sempre arrodoneix a dos decimals, cosa que no sempre és el que vull.
Després hi ha la funció num2str(), que funciona bé, però requereix que sàpigues amb antelació quants decimals i caràcters vols.
Què passa si només vols el número convertit en una cadena, amb tots els dígits i decimals? Per alguna raó, això és una cosa que sempre em fa buscar a Google perquè és sorprenentment difícil de fer i ho faig tan poques vegades que normalment no recordo exactament com; a la majoria de llenguatges de programació, esperaria que simplement poguessis concatenar el real a una cadena buida, però X++ no ho admet.
De tota manera, la manera més fàcil que he trobat per fer-ho és mitjançant una crida .NET. També hi ha diverses opcions, amb i sense opcions de formatació avançada, però si només voleu la conversió realment senzilla d'un real a una cadena, això serà suficient:
Si aquest codi s'ha d'executar a l'AOS (per exemple, en una tasca per lots), recordeu que primer heu d'afirmar el permís d'accés al codi necessari. En aquest cas, necessitareu un InteropPermission de tipus ClrInterop per cridar codi .NET, de manera que l'exemple de codi complet tindria un aspecte semblant a aquest:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Tingueu en compte que aquesta senzilla funció System::Convert utilitza la configuració regional actual del sistema pel que fa al caràcter del punt decimal. Potser això no és un problema per a vosaltres, però per a mi, que visc en una zona on s'utilitza una coma en lloc d'un punt com a separador decimal, pot requerir un processament addicional si, per exemple, la cadena s'ha d'utilitzar en un fitxer que ha de ser llegible per altres sistemes.
Lectures addicionals
Si t'ha agradat aquesta publicació, també et poden agradar aquests suggeriments:
- Ús d'una consulta en una classe de contracte de dades SysOperation al Dynamics AX 2012
- Identificació de classe de document i consulta per al servei AIF a Dynamics AX 2012
- Suprimir una entitat jurídica (comptes d'empresa) al Dynamics AX 2012
