Convertiți un real în șir cu toate zecimale în Dynamics AX 2012
Publicat: 16 februarie 2025 la 10:40:52 UTC
Ultima actualizare: 12 ianuarie 2026 la 08:50:55 UTC
În acest articol, explic cum se convertește un număr cu virgulă mobilă într-un șir de caractere, păstrând toate zecimalele în Dynamics AX 2012, inclusiv un exemplu de cod X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
Informațiile din această postare se bazează pe Dynamics AX 2012 R3. Este posibil să fie sau nu valabile pentru alte versiuni.
Din când în când, trebuie să convertesc un număr real într-un șir de caractere. De obicei, este suficient să-l transmit către strFmt(), dar funcția respectivă rotunjește întotdeauna la două zecimale, ceea ce nu este întotdeauna ceea ce îmi doresc.
Apoi, există funcția num2str(), care funcționează bine, dar necesită să știi dinainte câte zecimale și caractere dorești.
Ce se întâmplă dacă vrei doar ca numărul să fie convertit într-un șir de caractere, cu cifre și zecimale? Din anumite motive, acesta este un lucru care mă face mereu să caut pe Google, deoarece este surprinzător de dificil de făcut și îl fac atât de rar încât, de obicei, nu-mi amintesc exact cum - în majoritatea limbajelor de programare, m-aș aștepta să poți concatena realul cu un șir gol, dar X++ nu acceptă asta.
În orice caz, cea mai ușoară metodă pe care am găsit-o pentru a face asta este prin utilizarea unui apel .NET. Există mai multe opțiuni și aici, cu și fără opțiuni pentru formatare avansată, dar dacă doriți doar conversia simplă a unui număr real într-un șir de caractere, acest lucru va fi suficient:
Dacă acest cod va fi rulat pe AOS (de exemplu, într-un job batch), nu uitați să activați mai întâi permisiunea de acces la cod necesară. În acest caz, veți avea nevoie de o InteropPermission de tip ClrInterop pentru a apela cod .NET, deci exemplul complet de cod ar arăta cam așa:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Rețineți că această funcție simplă System::Convert utilizează setările regionale curente ale sistemului în ceea ce privește caracterul punctului zecimal. Acest lucru s-ar putea să nu fie o problemă pentru dvs., dar pentru mine, care locuiesc într-o zonă în care se folosește virgula în loc de punct ca separator zecimal, ar putea necesita o procesare suplimentară dacă, de exemplu, șirul trebuie utilizat într-un fișier care trebuie să poată fi citit de alte sisteme.
Lectură suplimentară
Dacă ți-a plăcut această postare, s-ar putea să-ți placă și aceste sugestii:
- Eroare „Nici o clasă de metadate definită pentru obiectul contractului de date” în Dynamics AX 2012
- Formatarea șirurilor cu Macro și strFmt în Dynamics AX 2012
- Utilizarea unei interogări într-o clasă de contract de date SysOperation în Dynamics AX 2012
