Pretvorite realno v niz z vsemi decimalkami v Dynamics AX 2012
Objavljeno: 16. februar 2025 ob 10:40:58 dop. UTC
Nazadnje posodobljeno: 12. januar 2026 ob 8:51:01 dop. UTC
V tem članku pojasnjujem, kako v programu Dynamics AX 2012 pretvoriti število s plavajočo vejico v niz, pri čemer ohranim vsa decimalna mesta, vključno s primerom kode X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
Informacije v tej objavi temeljijo na programu Dynamics AX 2012 R3. Morda veljajo za druge različice, morda pa tudi ne.
Občasno moram pretvoriti realno število v niz. Običajno je dovolj, da ga samo posredujem funkciji strFmt(), vendar ta funkcija vedno zaokroži na dve decimalki, kar pa ni vedno tisto, kar želim.
Potem je tu še funkcija num2str(), ki deluje dobro, vendar zahteva, da vnaprej veste, koliko decimalnih mest in znakov želite.
Kaj pa, če želite število pretvoriti v niz z vsemi števkami in decimalkami? Iz nekega razloga me to vedno prisili, da grem po Googlu, ker je presenetljivo nejasno in to počnem tako redko, da se običajno ne spomnim natančno, kako – v večini programskih jezikov bi pričakoval, da bi lahko realno število preprosto združili v prazen niz, vendar X++ tega ne podpira.
Kakorkoli že, daleč najlažji način, ki sem ga našel za to, je uporaba klica .NET. Tudi tukaj je na voljo več možnosti, z možnostmi za napredno oblikovanje in brez njih, če pa želite le res preprosto pretvorbo realnega števila v niz, bo to zadostovalo:
Če želite to kodo izvajati na AOS-u (na primer v paketnem opravilu), ne pozabite najprej potrditi potrebnega dovoljenja za dostop do kode. V tem primeru boste za klic kode .NET potrebovali InteropPermission tipa ClrInterop, zato bi bil celoten primer kode videti nekako takole:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Upoštevajte, da ta preprosta funkcija System::Convert uporablja trenutne jezikovne nastavitve sistema glede na decimalno vejico. Za vas to morda ne bo problem, ampak zame, ki živim na območju, kjer se kot ločilo decimalk uporablja vejica namesto pike, bo morda potrebna nadaljnja obdelava, če je treba niz na primer uporabiti v datoteki, ki jo morajo beriti tudi drugi sistemi.
Nadaljnje branje
Če vam je bila ta objava všeč, vam bodo morda všeč tudi ti predlogi:
- Uporaba poizvedbe v podatkovnem pogodbenem razredu SysOperation v Dynamics AX 2012
- Napaka »Ni opredeljenega razreda metapodatkov za objekt podatkovne pogodbe« v Dynamics AX 2012
- Razlika med data() in buf2Buf() v Dynamics AX 2012
