2009-04-24 12 views
16

Qual è la migliore pratica per lo scenario elencato di seguito?Best practice: formattare più valute

Abbiamo un'applicazione che vorremmo supportare più valute. Il software rispetterà le impostazioni locali degli utenti e regionali per dettare il formato numerico corretto, ovvero $ 10.000,00 o 10.000,00 ₴ ecc.

Vorremmo tuttavia essere in grado di formattare numeri diversi in base a un ID valuta (forse i tre lettera ISO4217 codice). La nostra idea è quella di memorizzare una tabella nel database con ciascuna valuta e quindi richiedere all'utente di selezionare il simbolo di valuta che verrà utilizzato. Il programma formatterà quindi tutti i numeri in base alle impostazioni locali/regionali, ma userà il simbolo di valuta come definito nel nostro programma.

Quindi, dati i seguenti valori e valute
10000 AUD
5989.34 USD
450 EUR

il programma sarebbe uscita
$ 10,000.00
$ 5,989.34
€ 450,00

o con un regionale impostando numeri come #####, ## $ il risultato sarebbe;
10000,00 $
5989,34 $
450,00 €

Rispettando numero locale/regione formattazione ma la visualizzazione di diverse valute, ciò che è meglio per questa pratica?

Spero che abbia senso.

La tecnologia utilizzata è C# .NET 2.0.

+0

Si dovrebbe fare riferimento alla domanda precedente, penso che vadano bene insieme: http://stackoverflow.com/questions/783971/storing-currency-symbols-in-a-database-table – Elijah

risposta

3

Suona come si dispone di una maniglia sulle migliori pratiche per la formattazione dei dati. Se fossi in te, mi preoccuperei meno di ciò che è tecnicamente lo standard, ma mi concentro maggiormente su ciò a cui sono abituati i tuoi utenti.

Se stai operando in mercati in cui gli utenti sono abbastanza esperti su diverse valute, è una cosa molto diversa dall'avere più utenti monoculturali. A seconda del caso, dovrai progettare la tua interfaccia in un modo diverso.

Inoltre, se la vostra esigenza è quello di visualizzare qualsiasi valuta per qualsiasi locale, lo standard ISO4217 è la soluzione migliore. È ciò che viene mostrato nei negozi di cambio di valuta in tutto il mondo, su cambi di valuta, fatture, ecc. In caso contrario, la visualizzazione di simboli di valuta potrebbe essere piuttosto confusa per alcuni utenti e il simbolo di per sé non indica quale valuta l'importo è effettivamente.

Vorrei anche fare riferimento alle seguenti domande su SO. Non tutti si riferiscono direttamente al tuo problema, ma hanno ottime meta discussioni sulle questioni relative al supporto di più valute.

1

Piuttosto che immagazzinare solo il simbolo di valuta, è possibile memorizzare la stringa di cultura per ogni codice di valuta, in modo da AUD -> it-AU

CultureInfo ci = new CultureInfo("en-AU"); 
currencyValue.ToString("c", ci); 

Non sono sicuro di quanta flessibilità ci sia nella forma disponibile

Non sono sicuro se questo aiuta:

Formatting Numeric Data for a Specific Culture

+0

Questa non è una soluzione valida per valute che vengono utilizzate in più locali, come l'euro. Diversi paesi della zona euro hanno formati numerici diversi. –

+0

sono d'accordo. il formato numerico deve rispettare la cultura attuale del computer mentre il simbolo della valuta rappresenta qualsiasi valuta. la soluzione proposta non è valida. –

0

Ho affrontato una situazione simile. Ho trovato un modo, non so quanto sarà utile per te. Ma ha risolto i miei problemi. Ho impostato una stringa di sessione per ogni posto come Session ["cur"] = "0.000" o "0.00" per ogni autenticazione di accesso. E dove mai la valuta arriva nel sistema ho usato. ToString [Session ["cur"]. ToString()] alle variabili del modello. Ha fatto il trucco per me. Spero che ti aiuti anche tu.