2010-10-08 28 views
12

Buen día, en la base de datos hay una tabla con registros de casas en venta. Para cada registro de casa hay un campo de código de moneda (en formato ISO 4217). ¿Es posible obtener algún símbolo de moneda de ese código para poder usarlo en el lado de la presentación?Código de moneda al mapeo de símbolo de moneda

Gracias.

P.S. Estaba intentando resolver ese problema configurando el objeto Currency (creado por Currency.getInstance (currencyCode)) en el método DecimalNumberFormat setCurrency y luego formateé el valor que necesitaba para mostrar, pero el valor formateado sigue sin el símbolo de moneda.

Respuesta

7

Puede utilizar el método Currency del objeto getSymbol.

¿Qué símbolo se utiliza depende de la configuración regional que se utiliza Ver this y this.

actualización, enero 2016: Los enlaces están muertos. Pero eran específicos de Java 1.4/5, por lo que ya no son realmente relevantes. Se pueden encontrar más detalles sobre el formato de moneda en https://docs.oracle.com/javase/tutorial/i18n/format/numberFormat.html. Sin embargo, los enlaces se pueden encontrar en el WayBackEngine.

+0

Probé para usar getSymbol para USD, entonces el retorno es el signo de dólar (correcto) pero si utilizo EUR o DKK como código de moneda, el resultado es EUR o DKK http: // ideone.com/ehmlP – artjomka

+0

El símbolo que se utiliza depende de la configuración regional que se utiliza. Vea los artículos en mi respuesta (actualizada) – Nivas

+0

Como entendí si quiero mostrar el símbolo de moneda apropiado, necesito mantener el formato regional en el tipo que necesito. ¿Estoy en lo cierto? (Por ejemplo, para mostrar correctamente el símbolo de moneda GBP Necesito tener moneda GBP mapeado, por ejemplo, en Locale.UK)? – artjomka

2

Puede usar la clase Divisa y la clase DecimalFormat para cumplir con sus requisitos. En el siguiente ejemplo, # representa el número y ¤ representa el símbolo de moneda, puede encontrar los parámetros de formato relevantes en el documento API de Java para la clase DecimalFormat.

 Currency currency = Currency.getInstance("USD"); 

     DecimalFormat decimalFormat = new DecimalFormat("#¤"); 
     decimalFormat.setCurrency(currency); 
     System.out.println(decimalFormat.format(234)); 
+0

Como dijo Nivas, puede obtener directamente un símbolo relevante usando el método getSymbol() de la clase Currency y también puede agregarlo por separado al número. –

11

@artjomka

que era capaz de replicar su problema mediante el establecimiento de mi configuración regional predeterminada a Letonia

Locale.setDefault(new Locale("lv","LV")); 
Currency c = Currency.getInstance("EUR"); 
System.out.println(c.getSymbol()); 

Esto me dio la salida de "euros".

Sin embargo, al dejar de configurar mi configuración regional en el Reino Unido (ya es mi valor predeterminado) obtengo el sympbol para el euro.

Locale.setDefault(Locale.UK); 
Currency c = Currency.getInstance("EUR"); 
System.out.println(c.getSymbol()); 
+2

Nivas editó su respuesta mientras yo escribía la mía. Sus artículos vinculados deberían verte bien. –

1

Debe llamar Currency.getSymbol(Locale) en lugar de Currency.getSymbol() (sin un objeto local). Establecer la configuración regional predeterminada le proporciona el comportamiento que desea.

0

Nunca adhiera ciegamente símbolos de moneda (que asume que append es la posición apropiada para la configuración regional del símbolo de moneda). I18n práctica insegura. Lo mismo con el "# ¤" cadena (para lugares con el símbolo de moneda prefijo, esto es incorrecto)

0

No es un código de fragmentos de https://stackoverflow.com/a/15343675/702345

Pero tenga cuidado:

  • una moneda puede tener símbolos múltiples Por ejemplo: USD tiene también el símbolo "US $" para el local "es_US" (al menos en Java8, Win7 en mi VM)
  • Diferencia Monedas pueden tener los mismos símbolos, por ejemplo: USD, AUD
Cuestiones relacionadas