code java java-7 currency bitcoin

java - iso 4217 currency code



Implementando Bitcoin y java.util.Currency (2)

Estoy tratando de agregar bitcoin como moneda para mostrar en mi sitio. Tengo tipos de cambio y todo, pero sigo recibiendo una IllegalArgumentException cada vez que uso java.util.Currency.getInstance("BTC") . Esto tiene sentido ya que no está incluido en la lista de códigos de moneda ISO 4217 , y tampoco en Java 7. He visto un par de opciones, pero nada que realmente resuelva mi problema.

  1. De acuerdo con los documentos de la plataforma Java, puede anular la moneda de una configuración regional específica creando un archivo $JAVA_HOME/lib/currency.properties . Este es un problema, ya que Bitcoin no está vinculado a una ubicación específica, ni debe usarse en lugar de la moneda de ningún país.

  2. Otra situación similar se presentó en this publicación de StackOverflow, donde China tenía que utilizar un segundo código de moneda, por lo que la solución fue crear su propio archivo currency.data que agregue una segunda moneda para la ubicación China. Esto es mejor, pero todavía existe el problema de vincular una moneda a una configuración regional.

¿Alguien se ha encontrado con este problema o ha encontrado una solución? Sé que Bitcoin es relativamente nuevo, pero sería genial poder mostrar los precios en formato Bitcoin.



No puede utilizar BTC como el código de moneda para bitcoins bajo ISO 4217 . BT está reservado para Bután. Sin embargo, ISO 3166-1 reserva varios códigos de país para la definición del usuario. Además, la wiki para ISO 4217 enumera XBT como un código de moneda para bitcoins (no oficialmente, por supuesto).

Locale.Builder b = new Locale.Builder(); b.setRegion("XB"); Locale xb = b.build(); Currency bitcoin = Currency.getInstance(xb);

Su archivo currency.properties se verá como:

XB=XBT,000,3

Desafortunadamente, no puede tener 8 para la unidad menor porque el análisis de java.util.Currency solo maneja una unidad menor de 0-3 :

Pattern propertiesPattern = Pattern.compile("([A-Z]{3})//s*,//s*(//d{3})//s*,//s*([0-3])");