Miklix

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

Објавено: 5 март 2025, во 19:54:10 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 ја користи моменталната локација на системот во однос на знакот за децимална точка. Ова можеби не е проблем за вас, но за мене кој живеам во област каде што се користи запирка наместо точка како децимален сепаратор, може да бара дополнителна обработка ако низата, на пример, треба да се користи во датотека што мора да биде читлива од други системи.

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

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

За авторот

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