如何使用设备货币格式格式化浮点值?

Jan*_*usz 49 android locale localization

我有一个打印计算金钱值的应用程序,我想用默认的货币格式显示该值.

例如在欧洲你会写:

1.000,95€

在美国,我想你会写

1,000.95 $

在其他货币中,小数部分显示的值或多或少,在美国,它将是2,但在日本则为0.

如何获得所有现有货币的确切格式?

Jan*_*usz 76

我找到了解决方案.NumberFormat类有许多预定义的格式化程序.还有一个用于格式化货币值.

如果使用静态方法getCurrencyInstance,则类将返回设备默认货币的格式化程序.我使用以下代码来设置我的结果:

NumberFormat format = NumberFormat.getCurrencyInstance();
((TextView) findViewById(R.id.text_result)).setText(format.format(result));
Run Code Online (Sandbox Code Playgroud)


Eug*_*nec 73

为了完整起见,假设您要在手机的当前区域设置中显示价格(正确的小数点和千位分隔符),但使用您选择的货币.

NumberFormat format = NumberFormat.getCurrencyInstance(Locale.getDefault());
format.setCurrency(Currency.getInstance("CZK"));
String result = format.format(1234567.89);
Run Code Online (Sandbox Code Playgroud)

result 然后会保留这些值:

  • CZK1,234,567.89 与美国本地人
  • 1 234 567,89 K? 与捷克语locale

如果您想省略价格的小数部分(显示$199而不是$199.00),请在使用格式化程序之前调用它:

format.setMinimumFractionDigits(0);
Run Code Online (Sandbox Code Playgroud)

所有选项都列在NumberFormat文档中.