Pretvorite real u niz sa svim decimalama u Dynamics AX 2012
Objavljeno: 16. veljače 2025. u 10:46:39 UTC
U ovom članku objašnjavam kako pretvoriti broj s pomičnim zarezom u niz uz očuvanje svih decimala u Dynamics AX 2012, uključujući primjer X++ koda.
Convert a Real to String with All Decimals in Dynamics AX 2012
Informacije u ovom postu temelje se na Dynamics AX 2012 R3. Može, ali i ne mora vrijediti za druge verzije.
S vremena na vrijeme trebam pretvoriti realni broj u niz. Obično je dovoljno samo proslijediti strFmt(), ali ta funkcija uvijek zaokružuje na dvije decimale, što nije uvijek ono što želim.
Tu je i funkcija num2str(), koja radi dobro, ali zahtijeva da unaprijed znate koliko decimala i znakova želite.
Što ako samo želite da se broj pretvori u niz, sa svim znamenkama i decimalama? Iz nekog razloga, to je nešto što me uvijek tjera da googlam jer je to iznenađujuće nejasno i radim to tako rijetko da se obično ne mogu točno sjetiti kako - u većini programskih jezika, očekivao bih da možete samo spojiti real u prazan niz, ali X++ to ne podržava.
U svakom slučaju, daleko najlakši način koji sam pronašao da to učinim je pomoću .NET poziva. Ovdje također postoji više opcija, sa i bez opcija za napredno oblikovanje, ali ako samo želite stvarno jednostavnu konverziju realnog u niz, ovo će biti dovoljno:
Ako se ovaj kod treba izvoditi na AOS-u (na primjer u skupnom poslu), ne zaboravite prvo potvrditi potrebnu dozvolu pristupa kodu. U ovom slučaju trebat će vam InteropPermission tipa ClrInterop za pozivanje .NET koda, tako da bi cijeli primjer koda izgledao otprilike ovako:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Budite svjesni da ova jednostavna funkcija System::Convert koristi trenutnu lokalizaciju sustava s obzirom na znak decimalne točke. To možda nije problem za vas, ali za mene koji živim u području gdje se kao decimalni razdjelnik koristi zarez umjesto točke, možda će biti potrebna daljnja obrada ako se niz, na primjer, treba koristiti u datoteci koju moraju moći čitati drugi sustavi.