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
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 o meno per altre versioni.
Ogni tanto, ho bisogno di convertire un numero reale in una stringa. Di solito, è sufficiente passarlo a strFmt(), ma quella funzione arrotonda sempre a due decimali, il che non è sempre ciò che voglio.
Poi c'è la funzione num2str(), che funziona bene, ma richiede di sapere in anticipo quanti decimali e caratteri si desiderano.
E se volessi solo 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 oscuro da fare e lo faccio così raramente che di solito non ricordo esattamente come - nella maggior parte dei linguaggi di programmazione, mi aspetterei che si potesse 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. Ci sono anche diverse opzioni qui, con e senza opzioni per la formattazione avanzata, ma se vuoi solo la conversione davvero semplice di un reale in una stringa, questo sarà sufficiente:
Se questo codice deve essere eseguito sull'AOS (ad esempio in un batch job), ricorda di asserire prima il permesso di accesso al codice necessario. In questo caso avrai bisogno di un InteropPermission di tipo ClrInterop per chiamare il codice .NET, quindi l'esempio di codice completo dovrebbe essere simile a questo:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Tieni presente che questa semplice funzione System::Convert usa 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 la stringa, ad esempio, deve essere usata in un file che deve essere leggibile da altri sistemi.