Konverter en ekte til streng med alle desimaler i Dynamics AX 2012
Publisert: 16. februar 2025 kl. 10:40:44 UTC
Sist oppdatert: 13. september 2025 kl. 22:52:55 UTC
I denne artikkelen forklarer jeg hvordan du konverterer et flyttall til en streng samtidig som du bevarer 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 gyldig for andre versjoner.
Av og til må jeg konvertere et reelt tall til en streng. Vanligvis er det nok å bare sende den til strFmt(), men den funksjonen runder 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 obskurt å gjøre, og jeg gjør det så sjelden at jeg vanligvis ikke husker nøyaktig hvordan - i de fleste programmeringsspråk vil jeg forvente at du bare kan sette sammen det virkelige 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-anrop. 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 real til en streng, vil dette være tilstrekkelig:
Hvis denne koden skal kjøres på AOS (for eksempel i en satsvis jobb), må du huske å hevde den nødvendige kodetilgangstillatelsen først. I dette tilfellet trenger du en InteropPermission av typen ClrInterop for å kalle .
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 der komma brukes i stedet for punktum som desimalskilletegn, kan det kreve videre behandling hvis strengen for eksempel må brukes i en fil som må kunne leses av andre systemer.
Videre lesing
Hvis du likte dette innlegget, kan du også like disse forslagene:
- Forskjellen mellom data() og buf2Buf() i Dynamics AX 2012
- Bruke SysExtension Framework for å finne ut hvilken underklasse som skal instansieres i Dynamics AX 2012
- Ringe AIF Document Services direkte fra X++ i Dynamics AX 2012