Implémentation de Bitcoin et java.util.Currency

J’essaie d’append le bitcoin comme devise à afficher sur mon site. J’ai des taux de change et tout, mais je continue à obtenir une IllegalArgumentException chaque fois que j’utilise java.util.Currency.getInstance("BTC") . Cela a du sens car il n’est pas inclus dans la liste des codes de devise ISO 4217 , mais pas dans Java 7. J’ai vu quelques options, mais rien de ce qui résout vraiment mon problème.

  1. Selon les documents de la plate- forme Java, vous pouvez remplacer la devise d’un paramètre régional spécifique en créant un fichier $JAVA_HOME/lib/currency.properties . Ceci est un problème car bitcoin n’est pas lié à une région spécifique, ni devrait être utilisé à la place de la devise d’un pays.

  2. Une autre situation similaire a été présentée dans cette publication de StackOverflow, où la Chine avait un deuxième code de devise à utiliser. La solution consistait donc à créer votre propre fichier currency.data ajoutant une deuxième devise pour les parameters régionaux de la Chine. C’est mieux, mais la question de l’attachement d’une monnaie à une région rest en suspens.

Quelqu’un at-il rencontré ce problème ou trouvé une solution de contournement? Je sais que bitcoin est relativement nouveau, mais ce serait bien de pouvoir afficher les prix au format bitcoin.

Vous ne pouvez pas utiliser BTC comme code de devise pour les bitcoins selon ISO 4217 . BT est réservé au Bhoutan. Cependant, l’ISO 3166-1 réserve plusieurs codes de pays pour la définition de l’utilisateur. De plus, le wiki pour ISO 4217 répertorie XBT comme code de devise pour les bitcoins (officieusement bien sûr).

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

Votre fichier currency.properties ressemblera à ceci:

 XB=XBT,000,3 

Malheureusement, vous ne pouvez pas avoir 8 pour l’unité mineure car l’parsing pour java.util.Currency ne gère qu’une unité mineure de 0-3 :

 Pattern propertiesPattern = Pattern.comstack("([AZ]{3})\\s*,\\s*(\\d{3})\\s*,\\s*([0-3])"); 

Comment gérer de l’argent bitcoin est bien expliqué dans la documentation. Jetez un oeil à ceci https://en.bitcoin.it/wiki/Proper_Money_Handling_(JSON-RPC)

J’espère que cela aide