Miklix

Pretvorite real u niz sa svim decimalama u Dynamics AX 2012

Objavljeno: 16. veljače 2025. u 10:46:39 UTC
Zadnje ažuriranje: 12. siječnja 2026. u 08:52:44 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 je stranica strojno prevedena s engleskog kako bi bila dostupna što većem broju ljudi. Nažalost, strojno prevođenje još nije usavršena tehnologija pa se mogu pojaviti pogreške. Ako želite, izvornu englesku verziju možete pogledati ovdje:

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

Informacije u ovom postu temelje se 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 niz znakova. Obično je dovoljno samo ga proslijediti funkciji strFmt(), ali ta funkcija uvijek zaokružuje na dvije decimale, što nije uvijek ono što želim.

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

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

U svakom slučaju, daleko najlakši način koji sam pronašao za to je korištenje .NET poziva. Ovdje također postoji više opcija, sa i bez opcija za napredno formatiranje, ali ako samo želite stvarno jednostavnu pretvorbu stvarnog broja u niz znakova, ovo će biti dovoljno:

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

Ako se ovaj kod izvršava na AOS-u (na primjer u batch zadatku), prvo ne zaboravite potvrditi potrebna dopuštenja za pristup kodu. U tom slučaju trebat će vam InteropPermission tipa ClrInterop za pozivanje .NET koda, pa bi cijeli 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 trenutnu lokalizaciju sustava s obzirom na znak decimalne točke. To možda neće biti problem za vas, ali za mene koji živim u području gdje se zarez koristi umjesto točke kao decimalni razdjelnik, možda će biti potrebna daljnja obrada ako se niz, na primjer, treba koristiti u datoteci koju drugi sustavi moraju moći čitati.

Dodatno čitanje

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


Podijeli na BlueskyPodijelite na FacebookuPodijelite na LinkedInuPodijelite na TumblrPodijeli na XPodijelite na LinkedInuPrikvači na Pinterest

Mikkel Christensen

O autoru

Mikkel Christensen
Mikkel je kreator i vlasnik miklix.com. Ima više od 20 godina iskustva kao profesionalni računalni programer/razvijač softvera i trenutno je zaposlen na puno radno vrijeme za veliku europsku IT korporaciju. Kada ne piše blog, svoje slobodno vrijeme provodi na široku lepezu interesa, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme obrađene na ovoj web stranici.