Konverter en ægte til streng med alle decimaler i Dynamics AX 2012
Udgivet: 16. februar 2025 kl. 10.40.26 UTC
Sidst opdateret: 12. januar 2026 kl. 08.50.44 UTC
I denne artikel forklarer jeg, hvordan man konverterer et flydende tal til en streng, samtidig med at alle decimaler bevares i Dynamics AX 2012, inklusive et X++ kodeeksempel.
Convert a Real to String with All Decimals in Dynamics AX 2012
Oplysningerne i dette indlæg er baseret på Dynamics AX 2012 R3. De er muligvis ikke gyldige for andre versioner.
En gang imellem har jeg brug for at konvertere et reelt tal til en streng. Normalt er det nok bare at sende det til strFmt(), men den funktion runder altid af til to decimaler, hvilket ikke altid er det, jeg ønsker.
Så er der num2str()-funktionen, som fungerer godt, men kræver, at du på forhånd ved, hvor mange decimaler og tegn du vil have.
Hvad hvis du bare vil have tallet konverteret til en streng, med alle cifre og decimaler? Af en eller anden grund er det noget, der altid får mig til at google, fordi det er overraskende uklart at gøre, og jeg gør det så sjældent, at jeg normalt ikke kan huske præcis hvordan - i de fleste programmeringssprog ville jeg forvente, at man bare kunne sammenkæde det reelle tal med en tom streng, men X++ understøtter ikke det.
Uanset hvad, er den langt nemmeste måde jeg har fundet at gøre dette på ved at bruge et .NET-kald. Der er også flere muligheder her, med og uden muligheder for avanceret formatering, men hvis du bare ønsker den helt simple konvertering af en reel værdi til en streng, er dette tilstrækkeligt:
Hvis denne kode skal køres på AOS'en (f.eks. i et batchjob), skal du huske at anmode om den nødvendige kodeadgangstilladelse først. I dette tilfælde skal du bruge en InteropPermission af typen ClrInterop for at kalde .NET-kode, så det fulde kodeeksempel vil se nogenlunde sådan ud:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Vær opmærksom på, at denne simple System::Convert-funktion bruger systemets aktuelle lokalitet med hensyn til decimaltegn. Dette er måske ikke et problem for dig, men for mig, der bor i et område, hvor komma bruges i stedet for punktum som decimalseparator, kan det kræve yderligere behandling, hvis strengen for eksempel skal bruges i en fil, der skal kunne læses af andre systemer.
Yderligere læsning
Hvis du kunne lide dette indlæg, kan du måske også lide disse forslag:
- Dynamics AX 2012 SysOperation Framework Hurtigt overblik
- Slet en juridisk enhed (virksomhedskonti) i Dynamics AX 2012
- Sådan itereres over elementerne i en enum fra X++-kode i Dynamics AX 2012
