Miklix

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++.


Această pagină a fost tradusă automat din limba engleză pentru a o face accesibilă cât mai multor persoane. Din păcate, traducerea automată nu este încă o tehnologie perfecționată, astfel încât pot apărea erori. Dacă preferați, puteți vizualiza versiunea originală în limba engleză aici:

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:

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

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:

new InteropPermission(InteropKind::ClrInterop).assert();
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:


Distribuie pe BlueskyDistribuie pe FacebookDistribuie pe LinkedInDistribuie pe TumblrDistribuie pe XDistribuie pe LinkedInPin pe Pinterest

Mikkel Christensen

Despre autor

Mikkel Christensen
Mikkel este creatorul și proprietarul miklix.com. El are peste 20 de ani de experiență ca programator de calculatoare/dezvoltator software profesionist și este în prezent angajat cu normă întreagă pentru o mare corporație europeană de IT. Atunci când nu scrie pe blog, își petrece timpul liber cu o gamă largă de interese, hobby-uri și activități, care se pot reflecta într-o anumită măsură în varietatea de subiecte abordate pe acest site.