Miklix

Претворете реално во стринг со сите децимали во Dynamics AX 2012

Објавено: 5 март 2025, во 19:54:10 UTC
Последно ажурирано: 12 јануари 2026, во 08:52:53 UTC

Во оваа статија, објаснувам како да конвертирате број со подвижна запирка во низа, а воедно да ги зачувате сите децимални броеви во Dynamics AX 2012, вклучувајќи пример за X++ код.


Оваа страница беше машински преведена од англиски за да биде достапна за што повеќе луѓе. За жал, машинското преведување сè уште не е усовршена технологија, така што може да се појават грешки. Ако сакате, можете да ја видите оригиналната англиска верзија овде:

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

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

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

Потоа, тука е функцијата num2str(), која работи добро, но бара однапред да знаете колку децимални цифри и знаци сакате.

Што ако сакате само бројот да се претвори во низа, со сите цифри и децимални броеви? Од некоја причина, ова е нешто што постојано ме тера да пребарувам на Google бидејќи е изненадувачки нејасно за правење и го правам толку ретко што обично не можам да се сетам точно како - во повеќето програмски јазици, би очекувал дека можете едноставно да споите реален број во празен низа, но 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 ја користи моменталната локација на системот во однос на децималната запирка. Ова можеби не е проблем за вас, но за мене кој живеам во област каде што се користи запирка наместо точка како децимален сепаратор, може да биде потребна дополнителна обработка ако стрингот, на пример, треба да се користи во датотека што мора да биде читлива од други системи.

Дополнително читање

Ако ви се допадна овој пост, можеби ќе ви се допаднат и овие предлози:


Споделете на BlueskyСподелете на ФејсбукСподелете на LinkedInСподелете на TumblrСподелете на XСподелете на LinkedInЗакачи на Pinterest

Микел Кристенсен

За авторот

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