Miklix

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++.


Questa pagina è stata tradotta automaticamente dall'inglese per renderla accessibile al maggior numero di persone possibile. Purtroppo, la traduzione automatica non è ancora una tecnologia perfezionata, quindi possono verificarsi degli errori. Se preferite, potete consultare la versione originale in inglese qui:

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:

stringValue = System.Convert::ToString(realValue);

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:

new InteropPermission(InteropKind::ClrInterop).assert();
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:


Condividi su BlueskyCondividi su FacebookCondividi su LinkedInCondividi su TumblrCondividi su XCondividi su LinkedInAggiungi su Pinterest

Mikkel Christensen

Sull'autore

Mikkel Christensen
Mikkel è il creatore e proprietario di miklix.com. Ha oltre 20 anni di esperienza come programmatore di computer/sviluppatore di software ed è attualmente impiegato a tempo pieno in una grande azienda IT europea. Quando non scrive sul blog, dedica il suo tempo libero a una vasta gamma di interessi, hobby e attività, che in qualche modo si riflettono nella varietà di argomenti trattati in questo sito.