实现比特币和java.util.Currency

2022-09-02 22:32:08

我正在尝试添加比特币作为货币以显示在我的网站上。我有汇率和一切,但每当我使用时,我都会得到一个。这是有道理的,因为它不包括在ISO 4217货币代码列表中,也不在Java 7中。我已经看到了几个选项,但没有一个真正解决我的问题。IllegalArgumentExceptionjava.util.Currency.getInstance("BTC")

  1. 根据Java平台文档,您可以通过创建文件来覆盖特定语言环境的货币。这是一个问题,因为比特币不与特定的区域设置绑定,也不应该用于代替任何国家的货币。$JAVA_HOME/lib/currency.properties

  2. 在StackOverflow的帖子中也提出了另一个类似的情况,中国有第二个货币代码可供使用,因此解决方案是构建自己的文件,为中国区域设置添加第二个货币。这样更好,但仍然存在将货币绑定到区域设置的问题。currency.data

是否有人遇到此问题或找到了解决方法?我知道比特币相对较新,但能够以比特币格式显示价格会很酷。


答案 1

根据ISO 4217,您不能使用BTC作为比特币的货币代码。BT是为不丹保留的。但是,ISO 3166-1 保留了几个国家/地区代码供用户定义。此外,ISO 4217的wiki将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)

希望它有帮助