我试图根据他们的Locale获取货币的符号.但它没有返回符号,而是返回代码.我有一个片段:
import java.util.Currency;
import java.util.Locale;
public class CurrencyFormat
{
public void displayCurrencySymbols()
{
Currency currency = Currency.getInstance(Locale.US);
System.out.println("United States: " + currency.getSymbol());
}
public static void main(String[] args)
{
new CurrencyFormat().displayCurrencySymbols();
}
}
Run Code Online (Sandbox Code Playgroud)
对于Locale.US,它给出符号$但是如果我替换
Currency currency = Currency.getInstance(Locale.US);
Run Code Online (Sandbox Code Playgroud)
同
Currency currency = Currency.getInstance(Locale.GERMANY);
Run Code Online (Sandbox Code Playgroud)
然后代替符号,它给出了国家代码.为什么这样以及我们如何获得符号?
编辑:在看了一些答案后,我想清楚设置一些特定的默认本地不是解决方案,因为我需要一次显示所有可用的符号.
例如
Locale.setDefault(Locale.UK);
Run Code Online (Sandbox Code Playgroud)
将给我欧元符号,但对于doller它将给代码而不是doller sign($).
我用了Play Billing Library两个subscriptions,一个三个月。对于3按月订阅,我想显示当月的价格1。\n例如,按月1订阅是$1,50,3按月订阅是$3($1对于1)。但我对货币有一些问题。
这是一个code:
long priceAmountMicros = skuDetails.getPriceAmountMicros(); //3000000\nString priceCurrency = skuDetails.getPriceCurrencyCode(); //USD\n\nfloat priceFloat = (float)priceAmountMicros / 3 / 1000000; //1\nString price = new DecimalFormat("#0.00").format(priceFloat);\n\nCurrency currency = Currency.getInstance(priceCurrency);\nString symbolCurrency = currency.getSymbol();//$\n\ntextView.setText(price + " " + symbolCurrency); //1.00 $ or 70.00 \xd1\x80\xd1\x83\xd0\xb1\nRun Code Online (Sandbox Code Playgroud)\n该代码几乎可以工作。美元兑换成美元。欧元转换为\xc2\xa3等。某些货币存在一些问题,例如俄罗斯货币无法使用。RUB转换为\xd1\x80\xd1\x83\xd0\xb1,但我期望\xe2\x82\xbd
\n …