Преобразуване на реален в низ с всички десетични знаци в Dynamics AX 2012
Публикувано: 16 февруари 2025 г. в 10:40:24 ч. 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 повикване. Тук също има множество опции, със и без опции за разширено форматиране, но ако просто искате наистина просто преобразуване на реално в низ, това ще е достатъчно:
Ако този код трябва да се изпълнява на AOS (например в пакетно задание), не забравяйте първо да потвърдите необходимото разрешение за достъп до код. В този случай ще ви е необходимо InteropPermission от тип ClrInterop, за да извикате .NET код, така че пълният пример за код ще изглежда така:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Имайте предвид, че тази проста функция System::Convert използва текущата езикова променлива на системата по отношение на знака от десетична запетая. Това може да не е проблем за вас, но за мен, който живея в район, където се използва запетая, а не точка като десетичен разделител, може да се наложи допълнителна обработка, ако низът например трябва да се използва във файл, който трябва да се чете от други системи.
Допълнително четене
Ако ви е харесала тази публикация, може да ви харесат и тези предложения:
- Разликата между data() и buf2Buf() в Dynamics AX 2012
- Идентифициране на клас документ и заявка за AIF услуга в Dynamics AX 2012
- Грешка „Няма дефиниран клас метаданни за обект на договор за данни“ в Dynamics AX 2012