Konverter en ekte til streng med alle desimaler i Dynamics AX 2012
Publisert: 16. februar 2025 kl. 10:40:44 UTC
I denne artikkelen forklarer jeg hvordan du konverterer et flyttall til en streng mens du beholder alle desimaler i Dynamics AX 2012, inkludert et X++ kodeeksempel.
Convert a Real to String with All Decimals in Dynamics AX 2012
Informasjonen i dette innlegget er basert på Dynamics AX 2012 R3. Det kan være eller ikke være gyldig for andre versjoner.
En gang i blant må jeg konvertere et reelt tall til en streng. Vanligvis er det nok å bare sende den til strFmt(), men den funksjonen rundes alltid av til to desimaler, noe som ikke alltid er det jeg ønsker.
Så er det num2str()-funksjonen, som fungerer bra, men krever at du vet på forhånd hvor mange desimaler og tegn du vil ha.
Hva om du bare vil ha tallet konvertert til en streng, med alle sifre og desimaler? Av en eller annen grunn er dette noe som alltid får meg til å google fordi det er overraskende uklart å gjøre, og jeg gjør det så sjeldent at jeg vanligvis ikke husker nøyaktig hvordan - i de fleste programmeringsspråk ville jeg forvente at du bare kunne sette den virkelige sammen til en tom streng, men X++ støtter ikke det.
Uansett, den desidert enkleste måten jeg har funnet å gjøre dette på er ved å bruke et .NET-kall. Det er flere alternativer her også, med og uten alternativer for avansert formatering, men hvis du bare vil ha den virkelig enkle konverteringen av en ekte til en streng, vil dette være tilstrekkelig:
Hvis denne koden skal kjøres på AOS (for eksempel i en batch-jobb), husk å hevde nødvendig kodetilgangstillatelse først. I dette tilfellet trenger du en InteropPermission av typen ClrInterop for å kalle .NET-kode, så det fullstendige kodeeksemplet vil se omtrent slik ut:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Vær oppmerksom på at denne enkle System::Convert-funksjonen bruker systemets gjeldende lokalitet med hensyn til desimaltegn. Dette er kanskje ikke et problem for deg, men for meg som bor i et område hvor komma er brukt fremfor punktum som desimalskilletegn, kan det kreve ytterligere behandling dersom strengen for eksempel må brukes i en fil som må kunne leses av andre systemer.