Konvertieren einer reellen Zahl in eine Zeichenfolge mit ausschließlich Dezimalstellen in Dynamics AX 2012
Veröffentlicht: 16. Februar 2025 um 10:40:27 UTC
Zuletzt aktualisiert: 12. Januar 2026 um 08:50:45 UTC
In diesem Artikel erkläre ich, wie man in Dynamics AX 2012 eine Gleitkommazahl in eine Zeichenkette umwandelt und dabei alle Dezimalstellen beibehält, einschließlich eines X++-Codebeispiels.
Convert a Real to String with All Decimals in Dynamics AX 2012
Die Informationen in diesem Beitrag basieren auf Dynamics AX 2012 R3. Ob sie auch für andere Versionen gelten, ist ungewiss.
Hin und wieder muss ich eine reelle Zahl in einen String umwandeln. Normalerweise reicht es, sie einfach an `strFmt()` zu übergeben, aber diese Funktion rundet immer auf zwei Dezimalstellen, was nicht immer gewünscht ist.
Dann gibt es noch die Funktion num2str(), die zwar gut funktioniert, aber voraussetzt, dass man vorher weiß, wie viele Dezimalstellen und Zeichen man haben möchte.
Was ist, wenn man eine Zahl einfach in einen String umwandeln möchte, inklusive aller Ziffern und Dezimalstellen? Aus irgendeinem Grund muss ich deswegen immer googeln, weil es überraschend kompliziert ist und ich es so selten mache, dass ich mich meistens nicht mehr genau erinnern kann, wie es geht. In den meisten Programmiersprachen würde ich erwarten, dass man die Zahl einfach an einen leeren String anhängen kann, aber X++ unterstützt das nicht.
Die mit Abstand einfachste Methode, die ich gefunden habe, ist die Verwendung eines .NET-Aufrufs. Auch hier gibt es mehrere Optionen, mit und ohne erweiterte Formatierungsoptionen. Wenn Sie jedoch nur eine einfache Konvertierung einer Zahl in einen String benötigen, genügt Folgendes:
Soll dieser Code auf dem AOS ausgeführt werden (z. B. in einem Batch-Job), denken Sie daran, vorher die erforderlichen Zugriffsrechte zu erteilen. In diesem Fall benötigen Sie eine InteropPermission vom Typ ClrInterop, um .NET-Code aufzurufen. Das vollständige Codebeispiel sähe dann etwa so aus:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Beachten Sie, dass diese einfache System::Convert-Funktion die aktuelle Systemeinstellung für das Dezimaltrennzeichen verwendet. Dies mag für Sie kein Problem darstellen, aber da in meiner Region das Komma anstelle des Punktes als Dezimaltrennzeichen verwendet wird, kann eine weitere Verarbeitung erforderlich sein, wenn die Zeichenkette beispielsweise in einer Datei verwendet werden soll, die von anderen Systemen gelesen werden muss.
Weitere Informationen
Wenn Ihnen dieser Beitrag gefallen hat, könnten Ihnen auch diese Vorschläge gefallen:
- Mithilfe des SysExtension-Frameworks ermitteln, welche Unterklasse in Dynamics AX 2012 instanziiert werden soll
- Dynamics AX 2012 SysOperation Framework - Kurzübersicht
- Identifizieren der Dokumentklasse und Abfrage für den AIF-Dienst in Dynamics AX 2012
