ted*_*ski 16 java currency java-7 bitcoin
我正在尝试添加比特币作为货币在我的网站上显示.我有汇率和一切,但IllegalArgumentException每当我使用时我都会收到java.util.Currency.getInstance("BTC").这是有道理的,因为它没有包含在ISO 4217货币代码列表中,也没有包含在Java 7中.我已经看到了几个选项,但没有什么能真正解决我的问题.
根据Java 平台文档,您可以通过创建文件来覆盖特定区域设置的货币$JAVA_HOME/lib/currency.properties.这是一个问题,因为比特币不依赖于特定的区域,也不应该用来代替任何国家的货币.
此 StackOverflow帖子中提供了另一个类似的情况,其中中国有第二个货币代码可供使用,因此解决方案是构建自己的currency.data文件,为中国语言环境添加第二种货币.这样做更好,但仍存在将货币绑定到区域设置的问题.
有没有人遇到这个问题或找到了解决方法?我知道比特币相对较新,但能够以比特币格式显示价格会很酷.
根据ISO 4217,您不能将BTC用作比特币的货币代码.BT是为不丹保留的.但是,ISO 3166-1 为用户定义保留了几个国家/地区代码.此外,ISO 4217XBT的维基列为比特币的货币代码(当然是非正式的).
Locale.Builder b = new Locale.Builder();
b.setRegion("XB");
Locale xb = b.build();
Currency bitcoin = Currency.getInstance(xb);
Run Code Online (Sandbox Code Playgroud)
您的currency.properties文件将如下所示:
XB=XBT,000,3
Run Code Online (Sandbox Code Playgroud)
不幸的是,你不能将8作为次要单位,因为解析java.util.Currency仅处理次要单位0-3:
Pattern propertiesPattern = Pattern.compile("([A-Z]{3})\\s*,\\s*(\\d{3})\\s*,\\s*([0-3])");
Run Code Online (Sandbox Code Playgroud)