使用默认语言环境使用 DecimalFormat 舍入 2 位小数

Rounding 2 decimal places with DecimalFormat using default Locale

如何在不考虑语言环境的情况下只得到两位小数。我知道如果需要,我可以使用 DecimalFormat 手动格式化 "0.00",但我想在用户的语言环境中获取正确的十进制类型并四舍五入到两个位置。

DecimalFormat dFormat = (DecimalFormat) NumberFormat.getInstance(Locale.getDefault());
etPayment.setText(dFormat.format(p)); // How would I do it on this line?

尝试DecimalFormat dFormat = new DecimalFormat("#.00");

DecimalFormat currencyFormatter = (DecimalFormat) NumberFormat.getInstance(Locale.getDefault());

currencyFormatter.setMaximumFractionDigits(2); // << This should
currencyFormatter.setMinimumFractionDigits(2); // << do the trick

System.out.println(currencyFormatter.format(-123456.7812));

将输出:

-123,456.78

或者如果您有像 Locale.GERMANY 这样的语言环境:

-123.456,78

更新:(简单复制粘贴)

DecimalFormat dFormat = (DecimalFormat) NumberFormat.getInstance(Locale.getDefault());
dFormat.setMaximumFractionDigits(2); // << This should
dFormat.setMinimumFractionDigits(2); // << do the trick
etPayment.setText(dFormat.format(p));