Miklix

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.


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

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

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:

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

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

Mikkel Bang Christensen

O autoru

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