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
V tomto článku vysvetľujem, ako previesť číslo s pohyblivou rádovou čiarkou na reťazec pri zachovaní všetkých desatinných miest v Dynamics AX 2012, 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 Dynamics AX 2012 R3. Môže a nemusí platiť pre iné verzie.
Raz za čas potrebujem previesť reálne číslo na reťazec. Zvyčajne stačí len odovzdanie strFmt(), ale táto funkcia sa 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 previesť na reťazec so všetkými číslicami a desatinnými miestami? Z nejakého dôvodu je to niečo, čo ma vždy prinú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 len zreťaziť real do prázdneho reťazca, ale X++ to nepodporuje.
Zďaleka najjednoduchší spôsob, ako to urobiť, je použiť volanie .NET. Aj tu je viacero možností, s možnosťami pokročilého formátovania aj bez nich, ale ak chcete skutočne jednoduchý prevod reálnej hodnoty na reťazec, bude stačiť toto:
Ak má byť tento kód spustený na AOS (napríklad v dávkovej úlohe), nezabudnite najprv uplatniť potrebné oprávnenie na prístup ku kódu. V tomto prípade budete potrebovať InteropPermission typu ClrInterop na volanie kódu .NET, takže úplný príklad kódu by vyzeral asi takto:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Uvedomte si, že táto jednoduchá funkcia System::Convert používa aktuálne miestne nastavenie systému vzhľadom na znak desatinnej čiarky. Možno to nie je problém pre vás, ale pre mňa, ktorý žijem v oblasti, kde sa ako oddeľovač desatinných miest používa čiarka namiesto bodky, môže byť potrebné ďalšie spracovanie, ak je napríklad potrebné použiť reťazec v súbore, ktorý musí byť čitateľný inými systémami.