Miklix

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

Објављено: 16. фебруар 2025. 10:47:35 UTC

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


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

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

Информације у овом посту су засноване на Динамицс АКС 2012 Р3. Може, али и не мора бити важеће за друге верзије.

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

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

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

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

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

Ако овај код треба да се покрене на АОС-у (на пример у пакетном задатку), не заборавите да прво потврдите неопходну дозволу за приступ коду. У овом случају ће вам требати ИнтеропПермиссион типа ЦлрИнтероп да бисте позвали .НЕТ код, тако да би цео пример кода изгледао отприлике овако:

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

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

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

Миккел Банг Кристенсен

О аутору

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