Реализация биткойнов и java.util.Currency
Я пытаюсь добавить биткойн в качестве валюты для отображения на моем сайте. У меня есть обменные курсы и все, но я продолжаю получать IllegalArgumentException
всякий раз, когда я использую java.util.Currency.getInstance("BTC")
. Это имеет смысл, поскольку он не включен в список кодов ISO 4217, а также не в Java 7. Я видел пару варианты, но ничего, что действительно решает мою проблему.
-
В соответствии с Java документами платформы вы можете переопределить определенную валюту локали, создав файл $JAVA_HOME/lib/currency.properties
. Это проблема, поскольку биткойн не привязан к конкретной локали, и он не должен использоваться вместо какой-либо валюты страны.
-
Другая аналогичная ситуация была представлена в этом столбце StackOverflow, где в Китае использовался второй код валюты, поэтому решение заключалось в создании собственного currency.data
, который добавил вторую валюту для локали Китая. Это лучше, но по-прежнему существует проблема привязки валюты к языку.
Кто-нибудь сталкивался с этой проблемой или нашел обходное решение? Я знаю, что биткойн относительно новый, но было бы здорово отображать цены в биткойнном формате.
Ответы
Ответ 1
Вы не можете использовать BTC в качестве кода валюты для биткойнов в ISO 4217. BT зарезервирован для Бутана. Однако ISO 3166-1 резервирует несколько кодов стран для определения пользователя. Кроме того, wiki для ISO 4217 перечисляет XBT
в качестве кода валюты для биткойнов (неофициально, конечно).
Locale.Builder b = new Locale.Builder();
b.setRegion("XB");
Locale xb = b.build();
Currency bitcoin = Currency.getInstance(xb);
Ваш файл currency.properties
будет выглядеть так:
XB=XBT,000,3
К сожалению, у вас не может быть 8 для второстепенного устройства, потому что синтаксический анализ для java.util.Currency
обрабатывает только младшая единица 0-3
:
Pattern propertiesPattern = Pattern.compile("([A-Z]{3})\\s*,\\s*(\\d{3})\\s*,\\s*([0-3])");
Ответ 2
Как обрабатывать биткойн деньги хорошо объясняется в документации. Взгляните на это https://en.bitcoin.it/wiki/Proper_Money_Handling_(JSON-RPC)
Надеюсь, что это поможет