Miklix

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

Megjelent: 2025. február 16. 10:40:33 UTC

Ebben a cikkben elmagyarázom, hogyan konvertálhat lebegőpontos számot karakterláncsá, miközben megőrzi az összes tizedesjegyet a Dynamics AX 2012-ben, beleértve az X++ kód példájá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-on alapulnak. Lehet, hogy más verziókra érvényes, de lehet, hogy nem.

Időnként át kell konvertálnom egy valós számot stringgé. Általában elég csak átadni az strFmt()-nek, de ez a függvény mindig két tizedesjegyre kerekedik, amit nem mindig akarok.

Aztán ott van a num2str() függvény, amely jól működik, de megköveteli, hogy előre tudja, hány tizedesjegyet és karaktert szeretne.

Mi van, ha csak azt szeretné, hogy a számot karakterláncsá alakítsa, minden számjegygel és tizedesjegyekkel? Valamilyen oknál fogva ez az, ami miatt mindig guglizok, mert meglepően homályos megtenni, és olyan ritkán csinálom, hogy általában nem is emlékszem pontosan, hogyan – a legtöbb programozási nyelvben azt várnám, hogy a valódit csak egy üres karakterlánchoz lehet összefűzni, de az X++ ezt nem támogatja.

Mindenesetre a legegyszerűbb módja ennek a .NET-hívás használata. Itt is több lehetőség kínálkozik, speciális formázási opciókkal és anélkül, de ha csak igazán egyszerű real konvertálást szeretne karakterláncsá, ez is elegendő:

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

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

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

Ne feledje, hogy ez az egyszerű System::Convert függvény a rendszer aktuális területi beállítását használja a tizedesvessző karakteréhez. Lehet, hogy ez nem probléma az Ön számára, de számomra, aki olyan területen él, ahol vesszőt használnak pont helyett tizedeselválasztóként, további feldolgozást igényelhet, ha például a karakterláncot olyan fájlban kell használni, amelynek más rendszerek számára is olvashatónak kell lennie.

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 Bang Christensen

A szerzőről

Mikkel Bang 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.