Convertiți un real în șir cu toate zecimale în Dynamics AX 2012
Publicat: 16 februarie 2025 la 10:40:52 UTC
În acest articol, explic cum să convertești un număr în virgulă mobilă într-un șir, păstrând în același timp toate zecimale î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. Poate fi valabil sau nu pentru alte versiuni.
Din când în când, trebuie să convertesc un număr real într-un șir. De obicei, este suficient să-l treci la strFmt(), dar acea funcție se rotunjește întotdeauna la două zecimale, ceea ce nu este întotdeauna ceea ce vreau.
Apoi există funcția num2str(), care funcționează bine, dar necesită să știți din timp câte zecimale și caractere doriți.
Ce se întâmplă dacă vrei doar ca numărul să fie convertit într-un șir, cu toate cifrele și zecimale? Din anumite motive, acesta este ceva care mă face mereu să caut pe Google, deoarece este surprinzător de obscur de făcut și o 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 într-un șir gol, dar X++ nu acceptă asta.
Oricum, cel mai ușor mod pe care l-am găsit de a face acest lucru este folosind un apel .NET. Există mai multe opțiuni și aici, cu și fără opțiuni pentru formatare avansată, dar dacă doriți doar o conversie cu adevărat simplă a unui real într-un șir, aceasta va fi suficientă:
Dacă acest cod urmează să fie rulat pe AOS (de exemplu, într-o lucrare batch), nu uitați să afirmaț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 codul .NET, astfel încât exemplul de cod complet ar arăta cam așa:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Fiți conștienți de faptul că această funcție simplă System::Convert utilizează localitatea curentă a sistemului în ceea ce privește caracterul punct zecimal. Aceasta poate să nu fie o problemă pentru dvs., dar pentru mine, care locuiesc într-o zonă în care virgula este folosită mai degrabă decât punctul ca separator zecimal, ar putea necesita o prelucrare suplimentară dacă șirul, de exemplu, trebuie utilizat într-un fișier care trebuie să fie citit de alte sisteme.