Pretvorite realno v niz z vsemi decimalkami v Dynamics AX 2012
Objavljeno: 16. februar 2025 ob 10:40:58 dop. UTC
V tem članku razlagam, kako pretvoriti število s plavajočo vejico v niz, pri tem pa ohraniti vse decimalke v Dynamics AX 2012, vključno s primerom kode X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
Informacije v tej objavi temeljijo na Dynamics AX 2012 R3. Lahko velja ali ne velja za druge različice.
Vsake toliko časa moram realno število pretvoriti v niz. Običajno zadostuje samo posredovanje v strFmt(), vendar ta funkcija vedno zaokroži na dve decimalki, kar ni vedno tisto, kar želim.
Potem je tu še funkcija num2str(), ki deluje dobro, vendar zahteva, da vnaprej veste, koliko decimalk in znakov želite.
Kaj pa, če želite samo številko pretvoriti v niz z vsemi števkami in decimalkami? Iz neznanega razloga je to nekaj, zaradi česar vedno iščem v Googlu, ker je to presenetljivo nejasno in to počnem tako redko, da se običajno ne morem spomniti natančno, kako - v večini programskih jezikov bi pričakoval, da bi lahko preprosto združili real v prazen niz, vendar X++ tega ne podpira.
Kakorkoli že, daleč najlažji način, ki sem ga našel, je uporaba klica .NET. Tudi tukaj je na voljo več možnosti, z možnostmi naprednega oblikovanja in brez njih, a če želite le res preprosto pretvorbo realnega v niz, bo to zadostovalo:
Če se bo ta koda izvajala na AOS (na primer v paketnem opravilu), ne pozabite najprej uveljaviti potrebnega dovoljenja za dostop kode. V tem primeru boste za klic kode .NET potrebovali dovoljenje InteropPermission tipa ClrInterop, zato bi bil primer celotne kode videti nekako takole:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Zavedajte se, da ta preprosta funkcija System::Convert uporablja trenutno področno nastavitev sistema glede na decimalno vejico. To morda ni težava za vas, toda zame, ki živim na območju, kjer se kot decimalno ločilo uporablja vejica in ne pika, bo morda potrebna nadaljnja obdelava, če je treba na primer niz uporabiti v datoteki, ki mora biti berljiva z drugimi sistemi.