Miklix

Претворите реал у стринг са свим децималима у Динамицс АКС 2012

Објављено: 16. фебруар 2025. 10:47:35 UTC
Последње ажурирано: 12. јануар 2026. 08:52:48 UTC

У овом чланку објашњавам како да конвертујем број са покретним зарезом у стринг уз очување свих децималних бројева у програму Dynamics AX 2012, укључујући пример X++ кода.


Ова страница је машински преведена са енглеског како би била доступна што већем броју људи. Нажалост, машинско превођење још увек није усавршена технологија, тако да може доћи до грешака. Ако желите, можете погледати оригиналну енглеску верзију овде:

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

Информације у овом посту су засноване на Dynamics AX 2012 R3. Могу, али и не морају бити важеће за друге верзије.

С времена на време, потребно ми је да конвертујем реални број у стринг. Обично је довољно само да га проследим функцији strFmt(), али та функција увек заокружује на две децимале, што није увек оно што желим.

Затим, ту је и функција num2str(), која добро функционише, али захтева да унапред знате колико децимала и знакова желите.

Шта ако желите да се број конвертује у стринг, са свим цифрама и децималама? Из неког разлога, ово је нешто што ме стално тера да гуглам јер је изненађујуће нејасно за урадити и радим то тако ретко да се обично не могу сетити тачно како - у већини програмских језика, очекивао бих да можете једноставно спојити реалан број са празним стрингом, али X++ то не подржава.

У сваком случају, далеко најлакши начин који сам пронашао да ово урадим је коришћење .NET позива. И овде постоји више опција, са и без опција за напредно форматирање, али ако желите само заиста једноставну конверзију реалног броја у стринг, ово ће бити довољно:

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

Ако се овај код покреће на AOS-у (на пример, у пакетном задатку), не заборавите да прво потврдите потребну дозволу за приступ коду. У овом случају ће вам бити потребна InteropPermission типа ClrInterop да бисте позвали .NET код, тако да би цео пример кода изгледао отприлике овако:

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

Имајте на уму да ова једноставна функција System::Convert користи тренутне локалне поставке система у погледу децималног зареза. Ово можда неће бити проблем за вас, али за мене, који живим у подручју где се зарез користи уместо тачке као децимални сепаратор, може бити потребна даља обрада ако, на пример, стринг треба да се користи у датотеци коју други системи морају да читају.

Даље читање

Ако сте уживали у овом посту, можда ће вам се свидети и ови предлози:


Поделите на БлуескиПоделите на ФејсбукуДелите на ЛинкедИнуПодели на Тумблр-уПодели на КсДелите на ЛинкедИнуПин на Пинтерест-у

Миккел Цхристенсен

О аутору

Миккел Цхристенсен
Миккел је креатор и власник миклик.цом. Има преко 20 година искуства као професионални компјутерски програмер/програмер софтвера и тренутно је запослен са пуним радним временом у великој европској ИТ корпорацији. Када не пише блог, своје слободно време проводи на широком спектру интересовања, хобија и активности, што се у извесној мери може одразити на разноврсност тема обрађених на овој веб страници.