Convertire un valore reale in una stringa con tutti i decimali in Dynamics AX 2012
Pubblicato: 16 febbraio 2025 alle ore 10:40:35 UTC
Ultimo aggiornamento: 12 gennaio 2026 alle ore 08:50:50 UTC
In questo articolo spiego come convertire un numero in virgola mobile in una stringa mantenendo tutti i decimali in Dynamics AX 2012, incluso un esempio di codice X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
Le informazioni contenute in questo post si basano su Dynamics AX 2012 R3. Potrebbero essere valide anche per altre versioni.
Ogni tanto mi capita di dover convertire un numero reale in una stringa. Di solito, basta passarlo a strFmt(), ma quella funzione arrotonda sempre a due decimali, il che non è sempre quello che voglio.
Poi c'è la funzione num2str(), che funziona bene, ma richiede di sapere in anticipo quanti decimali e caratteri si desiderano.
Se volessi semplicemente convertire il numero in una stringa, con tutte le cifre e i decimali? Per qualche ragione, questa è una cosa che mi fa sempre cercare su Google perché è sorprendentemente difficile da fare e lo faccio così raramente che di solito non ricordo esattamente come - nella maggior parte dei linguaggi di programmazione, mi aspetterei di poter semplicemente concatenare il reale a una stringa vuota, ma X++ non lo supporta.
In ogni caso, il modo più semplice che ho trovato per farlo è usare una chiamata .NET. Anche in questo caso ci sono diverse opzioni, con e senza opzioni di formattazione avanzata, ma se si desidera semplicemente convertire un numero reale in una stringa, questo è sufficiente:
Se questo codice deve essere eseguito sull'AOS (ad esempio in un processo batch), ricordatevi di richiedere prima l'autorizzazione di accesso al codice necessaria. In questo caso, avrete bisogno di un'InteropPermission di tipo ClrInterop per chiamare il codice .NET, quindi l'esempio di codice completo sarà simile al seguente:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Tieni presente che questa semplice funzione System::Convert utilizza le impostazioni locali correnti del sistema per quanto riguarda il carattere punto decimale. Questo potrebbe non essere un problema per te, ma per me che vivo in un'area in cui si usa la virgola anziché il punto come separatore decimale, potrebbe richiedere un'ulteriore elaborazione se, ad esempio, la stringa deve essere utilizzata in un file che deve essere leggibile da altri sistemi.
Ulteriori letture
Se ti è piaciuto questo post, potrebbero piacerti anche questi suggerimenti:
- Identificazione della classe di documento e query per il servizio AIF in Dynamics AX 2012
- Eliminare un'entità legale (account aziendali) in Dynamics AX 2012
- Chiamata dei servizi di documentazione AIF direttamente da X++ in Dynamics AX 2012
