Miklix

Pretvaranje realnog u niz sa svim decimalama u Dynamics AX 2012

Objavljeno: 16. februar 2025. u 10:46:36 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.


Ova stranica je mašinski prevedena sa engleskog kako bi bila dostupna što većem broju ljudi. Nažalost, mašinsko prevođenje još nije usavršena tehnologija, pa može doći do grešaka. Ako želite, možete pogledati originalnu englesku verziju ovdje:

Convert a Real to String with All Decimals in Dynamics AX 2012

Informacije u ovom postu su zasnovane na Dynamics AX 2012 R3. Može ili ne mora vrijediti za druge verzije.

S vremena na vrijeme, moram pretvoriti realni broj u niz. Obično je dovoljno samo prosljeđivanje u strFmt(), ali ta funkcija se uvijek zaokružuje na dvije decimale, što nije uvijek ono što želim.

Zatim tu je num2str() funkcija, koja radi dobro, ali zahtijeva da unaprijed znate koliko decimala i znakova želite.

Šta ako samo želite da se broj pretvori u niz, sa svim ciframa i decimalama? Iz nekog razloga, ovo je nešto što me uvijek tjera da guglam jer je to iznenađujuće opskurno i radim to tako rijetko da se obično ne mogu sjetiti točno kako - u većini programskih jezika, očekivao bih da možete jednostavno spojiti realno u prazan niz, ali X++ to ne podržava.

U svakom slučaju, daleko najlakši način koji sam pronašao da to uradim je pomoću .NET poziva. Postoji više opcija i ovdje, sa i bez opcija za napredno formatiranje, ali ako želite samo vrlo jednostavnu konverziju realnog u string, ovo će biti dovoljno:

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

Ako ovaj kod treba da se pokrene na AOS-u (na primjer u batch poslu), ne zaboravite da prvo potvrdite potrebnu dozvolu za pristup kodu. U ovom slučaju trebat će vam InteropPermission tipa ClrInterop za pozivanje .NET koda, tako da bi primjer punog koda izgledao otprilike ovako:

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

Budite svjesni da ova jednostavna funkcija System::Convert koristi trenutnu lokalizaciju sistema u odnosu na decimalni znak. Ovo možda nije problem za vas, ali za mene koji živim u području gdje se zarez, a ne tačka koristi kao decimalni separator, to može zahtijevati daljnju obradu ako string na primjer treba da se koristi u datoteci koja mora biti čitljiva od strane drugih sistema.

Podijelite na BlueskyPodijelite na FacebookuPodijelite na LinkedIn-uPodijelite na Tumblr-uPodijeli na XPodijelite na LinkedIn-uPrikači na Pinterest

Mikkel Bang Christensen

O autoru

Mikkel Bang Christensen
Mikkel je kreator i vlasnik miklix.com. Ima preko 20 godina iskustva kao profesionalni kompjuterski programer/programer softvera i trenutno je zaposlen sa punim radnim vremenom u velikoj evropskoj IT korporaciji. Kada ne piše blog, svoje slobodno vrijeme provodi na širokom spektru interesovanja, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme koje se obrađuju na ovoj web stranici.