Considerazioni su Currency e Globalizzazione

E' noto che per formattare un numero in formato "currency" è possibile usare la formattazione predefinita "C": price.ToString("C"). Tale tipo di formattazione oltre che impostare la corretta formattazione per decimali e separatore per migliaia aggiunge alla stringa formattata anche il simbolo della currency della cultura impostata implicitamente o esplicitamente.

Se noi scriviamo:

            decimal price = 10;
            string s_it_IT = price.ToString("C", new CultureInfo("it-IT"));            
            string s_en_US = price.ToString("C", new CultureInfo("en-US"));

abbiamo come risultato che s_it_IT = "€ 10,00" e s_en_US = "$ 10.00".

La cosa è senza dubbio interessante, ma perchè la formattazione di un campo currency deve comportare anche il cambiamento del simbolo della moneta? Ma in realtà la domanda più corretta è: perchè la formattazione "currency" deve includere anche il simbolo della currency? Non è certo la cultura che determina il costo di un oggetto... ecco perchè preferisco scrivere:

            string s_it_IT_dollaro = price.ToString("'$' #,##0.00", new CultureInfo("it-IT"));
            string s_en_US_dollaro = price.ToString("'$' #,##0.00", new CultureInfo("en-US"));

... se voglio formattare in dollari '$' e:

            string s_it_IT_euro = price.ToString("'€' #,##0.00", new CultureInfo("it-IT"));
            string s_en_US_euro = price.ToString("'€' #,##0.00", new CultureInfo("en-US"));

... se voglio formattare in euro '€'. Perchè potrei voler vedere i dollari formattati all'italiana e viceversa.

Cablare il simbolo della moneta nel codice non è certo il massimo. Se l'applicazione ha omogeneità di tipo di moneta potremmo pensare che la moneta è un parametro di installazione e scegliere di portare il simbolo - ad esempio - nel ".config". Se l'applicazione ha eterogeneità di moneta dovremmo affiancare - come meglio criediamo - ogni prezzo al suo simbolo. Ma la soluzione al problema - che va valutato in base contesto applicativo - è cmq un'altra storia.

Ovviamente la polemica/considerazione vale anche per la formattazione del currency nel famoso/famigerato "Control Panel -> Regional Settings".  Excel invece nella formattazione delle currency tiene divisi il concetto di symbol dal concetto del numero... come la logica vorrebbe che sia! :-p

posted @ domenica 17 dicembre 2006 21:06

Print
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011