Miklix

Pretvori realno u string sa svim decimalama u Dinamics AKS 2012

Objavio: 19. mart 2025. 21:34:14 UTC

U ovom članku objašnjavam kako pretvoriti broj sa pomičnim zarezom u niz uz očuvanje svih decimala u Dinamics AKS 2012, uključujući primer Ks ++ koda.


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

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

Informacije u ovom postu zasnovane su na Dynamics AX 2012 R3. Mogu biti tačne ili ne za druge verzije.

Svako malo, treba da konvertujem realni broj u string. Obično, samo njegovo prosleđivanje funkciji strFmt() je dovoljno, ali ta funkcija uvek zaokružuje na dva decimalna mesta, što nije uvek ono što želim.

Postoji i funkcija num2str(), koja dobro funkcioniše, ali zahteva da unapred znate koliko decimala i karaktera želite.

Šta ako samo želite da broj bude konvertovan u string, sa svim ciframa i decimalama? Iz nekog razloga, ovo je nešto što me uvek tera da pretražujem Google, jer je iznenađujuće teško to uraditi, a radim to tako retko da obično ne mogu tačno da se setim kako – u većini programskih jezika, očekivao bih da možete jednostavno da konkatenirate realni broj sa praznim stringom, ali X++ to ne podržava.

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

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

Ukoliko se ovaj kod pokreće na AOS (na primer u batch jobu), ne zaboravite da prvo dodelite potrebne dozvole za pristup kodu. U ovom slučaju, biće vam potrebna InteropPermission tipa ClrInterop za pozivanje .NET koda, pa bi ceo primer koda izgledao ovako:

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

Budite svesni da ova jednostavna funkcija System::Convert koristi trenutnu lokalizaciju sistema u pogledu karaktera za decimalnu tačku. Ovo možda neće biti problem za vas, ali za mene, koji živim u području gde se koristi zarez umesto tačke kao separator decimala, može zahtevati dalju obradu ako string, na primer, treba da bude korišćen u fajlu koji mora biti čitljiv od strane drugih sistema.

Podeli na BlueskiPodeli na FejsbukuPodeli na LinkedInPodeli na TumblrPodeli na XPodeli na LinkedInPin na Pinterest

Mikkel Christensen

O autoru

Mikkel Christensen
Mikel je tvorac i vlasnik miklix.com. Ima preko 20 godina iskustva kao profesionalni kompjuterski programer / programer i trenutno je zaposlen sa punim radnim vremenom za veliku evropsku IT korporaciju. Kada ne bloguje, on provodi svoje slobodno vreme na širokom spektru interesovanja, hobija i aktivnosti, što se u određenoj meri može odraziti na različite teme koje se obrađuju na ovoj veb stranici.