Formattare un numero in euro con C# e ASP.NET

Giorgio Borelli

simbolo euro e valuta corrente (currency) in ASP.NET e C#La formattazione di un numero, sia esso intero o in virgola nella valuta corrente ed in particolar modo in euro è un'esigenza con la quale presto o tardi qualsiasi sviluppatore asp.net deve confrontarsi, niente di chè intendiamoci, però basta davvero poco per avere una formattazione corretta e fare le cose fatte bene anzichè ricorrere a metodi e simboli ascii che non soddisfano appieno il nostro obbiettivo.

Per scrivere il simbolo dell'euro in ASP.NET e C# ricorreremo al metodo Format della classe String, andiamo a vedere come fare.

Il simbolo dell'euro può essere scritto in tanti modi, ricorrendo alla tabella dei caratteri ascii, basta infatti eseguire la combinazione dei tasti "Alt + 128", oppure possiamo usare il codice html, in questo caso scriviamo "€", oppure "€" per la notazione decimale Unicode o ancora "€" per quella esadecimale Unicode, o infine possiamo ricorrere ad un trucchetto, apriamo Word e da strumenti->Inserisci Simbolo includiamo l'euro sul foglio bianco, poi lo copiamo ed infine lo incolliamo nel punto della pagina che a noi interessa.

Tutti questi metodi permettono di scrivere la "e" dell'euro, però a mio avviso non è il medo corretto nè tantomeno elegante di procedere, o quanto meno non lo è per chi scrive pagine aspx (asp.net), vuoi per la diversa formattazione ed interpretazione dei caratteri da parte dei browser, vuoi per la rappresentazione dei decimali che andrebbero comunque gestiti, o vuoi ancora per l'eleganza di scrittura del codice e/o del markup.

Per scrivere il simbolo dell'euro e formattare un numero in euro in ASP.NET e C# correttamente dobbiamo avvalerci di un metodo comodissimo messoci a disposizione dal .NET framework sulla classe String.

Supponiamo quindi di dover rappresentare dinamicamente sulla colonna di una gridview i prezzi di determinati prodotti, sfruttando il databinding di asp.net usiamo direttamente il controllo testuale BoundField per la rappresentazione dei prezzi, in questo modo:

<asp:BoundField HeaderText="Prezzo" DataField="Price" DataFormatString="{0:C}"></asp:BoundField>

come vedete, il controllo BoundField possiede una proprietà DataFormatString nella quale è possibile specificare la formattazione su come deve essere visualizzato il dato richiamato.

Usando l'espressione {0:C}, stiamo dicendo al controllo di rappresentare il dato (il numero, il prezzo) come un numero in virgola con due decimali e di aggiungere automaticamente la rappresentazione in valuta corrente, infatti la "C" sta per Currency, che nel nostro caso (in quasi tutta europa) è il simbolo dell'euro, quindi avremo ad es. un prezzo rappresentato come € 10,00.

Il bello di tutto ciò è che noi non dobbiamo preoccuparci di niente, tramite la proprietà DataFormatString abbiamo solo detto al controllo come vogliamo che vengano rappresentati i numeri in stile valuta con l'euro.

Se invece abbiamo nel markup una Label cosa succede? Questo controllo non possiede la proprietà DataFormatString, e poi non avevamo parlato di un metodo Format, beh! anche qui basta poco, anzi con quest'altro esempio vediamo pure come formattare il numero in euro usando C# da codice, o dal codebehind della pagina asp.net se preferite, scriviamo quindi la label nel markup ed il suo codice rispettivamente come:

<asp:Label ID="LabelEuro" runat="server" Text="Label"></asp:Label>

 

LabelEuro.Text = String.Format("{0:C}", 12.50);

 

in questo caso abbiamo richiamato il metodo Format della classe String, e poi tramite la solita sintassi {0:C} indichiamo che il dato deve essere formattato nella valuta corrente, ovvero in euro. Ovviamente a posto del valore fisso 12,50, può esserci una variabile sia intera che in virgola o valori caricati direttamente a runtime da un database, comodo no?

 

Conclusioni

Ribadisco che a mio avviso questo è un modo molto elegante per formattare i numeri con la rappresentazione in euro con C# e ASP.NET, fate attenzione però, spesso ho usato la frase "valuta corrente" e non direttamente euro, infatti la sintassi {0:C} indica esattamente la valuta (Currency), quindi se stiamo usando un browser europeo sarà l'euro, uno americano sarà il dollaro ed uno inglese la sterlina; senza che avvenga la conversione automatica del cambio, quella dovete farvela prima eventualmente, quindi occhio a quello che desiderate ottenere.

Chiunque voglia aggiungere qualcosa o chiedere ulteriori chiarimenti su Come rappresentare un numero col simbolo dell'euro in C# e ASP.NET, può farlo tramite i commenti, ogni vostro contributo alla discussione sarà ben accetto.

Categorie: ASP.NET | C#

Tags: ,

Aggiungi Commento

biuquote
Loading