Preveďte real na reťazec so všetkými desatinnými miestami v Dynamics AX 2012
Publikované: 16. februára 2025 o 10:40:56 UTC
Posledná aktualizácia: 12. januára 2026 o 8:51:00 UTC
V tomto článku vysvetľujem, ako v aplikácii Dynamics AX 2012 previesť číslo s pohyblivou desatinnou čiarkou na reťazec so zachovaním všetkých desatinných miest, vrátane príkladu kódu X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
Informácie v tomto príspevku sú založené na systéme Dynamics AX 2012 R3. Môžu, ale nemusia byť platné aj pre iné verzie.
Občas potrebujem previesť reálne číslo na reťazec. Zvyčajne stačí ho len odovzdať funkcii strFmt(), ale táto funkcia vždy zaokrúhli na dve desatinné miesta, čo nie je vždy to, čo chcem.
Potom je tu funkcia num2str(), ktorá funguje dobre, ale vyžaduje, aby ste vopred vedeli, koľko desatinných miest a znakov chcete.
Čo ak chcete číslo len previesť na reťazec so všetkými číslicami a desatinnými číslami? Z nejakého dôvodu je to niečo, čo ma vždy núti googliť, pretože je to prekvapivo nejasné a robím to tak zriedka, že si zvyčajne nepamätám presne ako – vo väčšine programovacích jazykov by som očakával, že by ste mohli jednoducho zreťaziť reálne číslo s prázdnym reťazcom, ale X++ to nepodporuje.
V každom prípade, zďaleka najjednoduchší spôsob, aký som našiel, je použiť volanie .NET. Aj tu existuje viacero možností, s možnosťami pokročilého formátovania a bez nich, ale ak chcete len naozaj jednoduchú konverziu skutočného čísla na reťazec, postačí toto:
Ak sa má tento kód spustiť na AOS (napríklad v dávkovej úlohe), nezabudnite najprv uplatniť potrebné oprávnenia na prístup ku kódu. V tomto prípade budete potrebovať InteropPermission typu ClrInterop na volanie kódu .NET, takže celý príklad kódu bude vyzerať asi takto:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Majte na pamäti, že táto jednoduchá funkcia System::Convert používa aktuálne miestne nastavenie systému s ohľadom na znak desatinnej čiarky. Pre vás to nemusí byť problém, ale pre mňa, ktorý žije v oblasti, kde sa ako oddeľovač desatinných miest používa čiarka namiesto bodky, môže to vyžadovať ďalšie spracovanie, ak je napríklad potrebné reťazec použiť v súbore, ktorý musia byť čitateľné aj inými systémami.
Ďalšie čítanie
Ak sa vám tento príspevok páčil, možno sa vám budú páčiť aj tieto návrhy:
- Chyba „Pre objekt zmluvy údajov nie je definovaná žiadna trieda metadát“ v Dynamics AX 2012
- Rýchly prehľad Dynamics AX 2012 SysOperation Framework
- Odstráňte právnickú osobu (firemné účty) v Dynamics AX 2012
