Konvertera en reell till sträng med alla decimaler i Dynamics AX 2012
Publicerad: 16 februari 2025 kl. 10:41:00 UTC
I den här artikeln förklarar jag hur man konverterar ett flyttal till en sträng samtidigt som alla decimaler bevaras i Dynamics AX 2012, inklusive ett X++-kodexempel.
Convert a Real to String with All Decimals in Dynamics AX 2012
Informationen i det här inlägget är baserad på Dynamics AX 2012 R3. Det kan eller kanske inte är giltigt för andra versioner.
Då och då behöver jag konvertera ett reellt tal till en sträng. Vanligtvis räcker det med att bara skicka den till strFmt(), men den funktionen avrundas alltid till två decimaler, vilket inte alltid är vad jag vill ha.
Sedan finns det num2str()-funktionen, som visserligen fungerar bra, men kräver att du i förväg vet hur många decimaler och tecken du vill ha.
Vad händer om du bara vill konvertera talet till en sträng, med alla siffror och decimaler? Av någon anledning är detta något som alltid får mig att googla eftersom det är förvånansvärt dunkelt att göra och jag gör det så sällan att jag vanligtvis inte kommer ihåg exakt hur - i de flesta programmeringsspråk skulle jag förvänta mig att du bara kunde sammanfoga det verkliga till en tom sträng, men X++ stöder inte det.
Hur som helst, det överlägset enklaste sättet jag har hittat att göra detta på är att använda ett .NET-samtal. Det finns flera alternativ här också, med och utan alternativ för avancerad formatering, men om du bara vill ha den riktigt enkla konverteringen av en real till en sträng så räcker det här:
Om den här koden ska köras på AOS (till exempel i ett batchjobb), kom ihåg att först ansöka om den nödvändiga åtkomstbehörigheten för koden. I det här fallet behöver du en InteropPermission av typen ClrInterop för att anropa .NET-kod, så det fullständiga kodexemplet skulle se ut ungefär så här:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Var medveten om att denna enkla System::Convert-funktion använder systemets aktuella lokalitet med avseende på decimaltecken. Detta kanske inte är ett problem för dig, men för mig som bor i ett område där kommatecken används snarare än punkt som decimalavgränsare kan det kräva ytterligare bearbetning om strängen till exempel behöver användas i en fil som måste vara läsbar av andra system.