Miklix

A Dynamics AX 2012-ben valós átalakítása karakterláncra minden tizedesjegygel

Megjelent: 2025. február 16. 10:40:33 UTC
Utolsó frissítés: 2026. január 12. 8:50:48 UTC

Ebben a cikkben elmagyarázom, hogyan lehet egy lebegőpontos számot karakterlánccá konvertálni a Dynamics AX 2012-ben, miközben megőrizzük az összes tizedesjegyet, beleértve egy X++ kódpéldát is.


Ezt az oldalt angolból gépi fordítással készítettük, hogy minél több ember számára elérhető legyen. Sajnos a gépi fordítás még nem tökéletes technológia, ezért előfordulhatnak hibák. Ha szeretné, itt megtekintheti az eredeti angol nyelvű változatot:

Convert a Real to String with All Decimals in Dynamics AX 2012

A bejegyzésben található információk a Dynamics AX 2012 R3 verzión alapulnak. Előfordulhat, hogy más verziókra nem érvényesek.

Időről időre előfordul, hogy valós számokat kell karakterlánccá alakítanom. Általában elég, ha csak átadom az strFmt() függvénynek, de az mindig két tizedesjegyre kerekít, ami nem mindig az, amit szeretnék.

Aztán ott van a num2str() függvény, ami jól működik, de előre tudni kell hozzá, hogy hány tizedesjegyet és karaktert szeretnél használni.

Mi van, ha csak egy karakterlánccá szeretnéd konvertálni a számot, minden számjeggyel és tizedesjegygel? Valamiért ez az, ami mindig arra késztet, hogy a Google-ben keressek rá, mert meglepően bonyolult, és olyan ritkán csinálom, hogy általában nem emlékszem pontosan, hogyan - a legtöbb programozási nyelvben azt várnám, hogy egyszerűen összefűzheted a valós számot egy üres karakterlánccal, de az X++ ezt nem támogatja.

Mindenesetre a legegyszerűbb módja ennek egy .NET hívás használata. Itt is több lehetőség van, speciális formázási lehetőségekkel és anélkül, de ha csak egy valós szám egyszerű karakterlánccá konvertálására van szükséged, akkor ez elegendő lesz:

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

Ha ezt a kódot az AOS-en kell futtatni (például egy kötegelt feldolgozásban), ne felejtse el először igényelni a szükséges kódhozzáférési engedélyt. Ebben az esetben egy ClrInterop típusú InteropPermissionre lesz szüksége a .NET kód meghívásához, így a teljes kódpélda valahogy így nézne ki:

new InteropPermission(InteropKind::ClrInterop).assert();
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();

Légy tudatában annak, hogy ez az egyszerű System::Convert függvény a rendszer aktuális területi beállítását használja a tizedesvessző karakterhez képest. Ez lehet, hogy nem jelent problémát számodra, de számomra, aki egy olyan területen élek, ahol a vesszőt használják tizedesjelként pont helyett, további feldolgozást igényelhet, ha például a karakterláncot egy olyan fájlban kell használni, amelynek más rendszerek számára is olvashatónak kell lennie.

További olvasmányok

Ha tetszett ez a bejegyzés, akkor ezek a javaslatok is érdekelhetik:


Oszd meg a Bluesky-nOszd meg a FacebookonOszd meg a LinkedIn-enOszd meg a Tumblr-enOszd meg X-enOszd meg a LinkedIn-enPin a Pinteresten

Mikkel Christensen

A szerzőről

Mikkel Christensen
Mikkel a miklix.com létrehozója és tulajdonosa. Több mint 20 éves tapasztalattal rendelkezik, mint hivatásos számítógépes programozó/szoftverfejlesztő, és jelenleg teljes munkaidőben dolgozik egy nagy európai informatikai vállalatnál. Amikor nem blogol, szabadidejét érdeklődési körének, hobbijainak és tevékenységeinek széles skálájával tölti, ami bizonyos mértékig tükröződhet a weboldalon tárgyalt témák sokféleségében.