Miklix

Pretvaranje realnog u niz sa svim decimalama u Dynamics AX 2012

Objavljeno: 16. februar 2025. u 10:46:36 UTC
Posljednje ažurirano: 12. januar 2026. u 08:52:43 UTC

U ovom članku objašnjavam kako pretvoriti broj s pomičnim zarezom u niz znakova 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 zasnovane su na Dynamics AX 2012 R3. Mogu, ali i ne moraju biti važeće za druge verzije.

S vremena na vrijeme, trebam pretvoriti realni broj u string. Obično je dovoljno samo ga proslijediti funkciji strFmt(), ali ta funkcija uvijek zaokružuje na dvije decimale, što nije uvijek ono što želim.

Zatim postoji funkcija num2str(), koja dobro funkcioniše, ali zahtijeva da unaprijed znate koliko decimala i znakova želite.

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

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

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

Ako se ovaj kod izvršava na AOS-u (na primjer, u batch zadatku), ne zaboravite prvo potvrditi potrebnu dozvolu za pristup kodu. U ovom slučaju, trebat će vam InteropPermission tipa ClrInterop za pozivanje .NET koda, tako da bi puni primjer koda izgledao ovako:

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

Imajte na umu da ova jednostavna funkcija System::Convert koristi trenutne postavke sistema u odnosu na decimalni zarez. Ovo možda neće biti problem za vas, ali za mene, koji živim u području gdje se zarez koristi umjesto tačke kao decimalni separator, može biti potrebna daljnja obrada ako se, na primjer, niz treba koristiti u datoteci koju drugi sistemi moraju moći čitati.

Dodatno čitanje

Ako vam se svidio ovaj post, možda će vam se svidjeti i ovi prijedlozi:


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

Mikkel Christensen

O autoru

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