Miklix

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++.


Táto stránka bola strojovo preložená z angličtiny, aby bola prístupná čo najväčšiemu počtu ľudí. Žiaľ, strojový preklad ešte nie je dokonalá technológia, takže sa môžu vyskytnúť chyby. Ak chcete, môžete si pozrieť pôvodnú anglickú verziu tu:

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:

stringValue = System.Convert::ToString(realValue);

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:

new InteropPermission(InteropKind::ClrInterop).assert();
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:


Zdieľať na BlueskyZdieľať na FacebookuZdieľať na LinkedInZdieľať na TumblrZdieľať na XZdieľať na LinkedInPripnúť na Pintereste

Mikkel Christensen

O autorovi

Mikkel Christensen
Mikkel je tvorcom a majiteľom miklix.com. Má viac ako 20 rokov skúseností ako profesionálny počítačový programátor/vývojár softvéru a v súčasnosti pracuje na plný úväzok pre veľkú európsku IT korporáciu. Keď práve nepíše blog, venuje svoj voľný čas širokej škále záujmov, koníčkov a aktivít, čo sa môže do istej miery odrážať v rôznorodosti tém na tejto webovej lokalite.