Converteer een reëel getal naar een tekenreeks met alleen decimalen in Dynamics AX 2012
Gepubliceerd: 16 februari 2025 om 10:40:45 UTC
Laatst bijgewerkt: 12 januari 2026 om 08:50:53 UTC
In dit artikel leg ik uit hoe je een drijvende-komma getal naar een tekenreeks converteert met behoud van alle decimalen in Dynamics AX 2012, inclusief een X++-codevoorbeeld.
Convert a Real to String with All Decimals in Dynamics AX 2012
De informatie in dit bericht is gebaseerd op Dynamics AX 2012 R3. Deze informatie is mogelijk niet geldig voor andere versies.
Af en toe moet ik een reëel getal omzetten naar een tekenreeks. Meestal is het voldoende om het aan strFmt() door te geven, maar die functie rondt altijd af op twee decimalen, wat niet altijd is wat ik wil.
Dan is er nog de functie num2str(), die goed werkt, maar waarvoor je van tevoren moet weten hoeveel decimalen en tekens je wilt.
Wat als je het getal gewoon wilt omzetten naar een tekenreeks, inclusief alle cijfers en decimalen? Om de een of andere reden moet ik dit altijd opzoeken op Google, omdat het verrassend lastig is om te doen en ik het zo zelden doe dat ik meestal niet meer precies weet hoe het moet. In de meeste programmeertalen zou je verwachten dat je het werkelijke getal gewoon aan een lege tekenreeks kunt toevoegen, maar X++ ondersteunt dat niet.
De verreweg eenvoudigste manier die ik heb gevonden om dit te doen, is door een .NET-aanroep te gebruiken. Ook hier zijn meerdere opties beschikbaar, met en zonder opties voor geavanceerde opmaak, maar als je alleen een heel eenvoudige conversie van een reëel getal naar een tekenreeks wilt, is dit voldoende:
Als deze code op de AOS moet worden uitgevoerd (bijvoorbeeld in een batchtaak), vergeet dan niet eerst de benodigde toegangsmachtiging voor de code te verkrijgen. In dit geval hebt u een InteropPermission van het type ClrInterop nodig om .NET-code aan te roepen, dus het volledige codevoorbeeld zou er ongeveer zo uitzien:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Houd er rekening mee dat deze eenvoudige System::Convert-functie de huidige landinstellingen van het systeem gebruikt met betrekking tot het decimale scheidingsteken. Dit is voor u wellicht geen probleem, maar voor mij, die in een regio woont waar de komma in plaats van de punt als decimaal scheidingsteken wordt gebruikt, kan dit extra verwerking vereisen als de tekenreeks bijvoorbeeld in een bestand moet worden gebruikt dat door andere systemen moet kunnen worden gelezen.
Verder lezen
Als je dit bericht leuk vond, vind je deze suggesties misschien ook interessant:
- Documentklasse en query identificeren voor AIF-service in Dynamics AX 2012
- Fout 'Geen metagegevensklasse gedefinieerd voor gegevenscontractobject' in Dynamics AX 2012
- Stringopmaak met macro en strFmt in Dynamics AX 2012
