【问题标题】:Rounding 2 decimal places with DecimalFormat using default Locale使用默认语言环境使用 DecimalFormat 舍入 2 位小数
【发布时间】:2015-01-24 20:58:41
【问题描述】:

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

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

【问题讨论】:

  • @VGR 我完全忘记了这一点。我以前用过那个。出于某种原因,我的 IDE (Android Studio) 无法识别任何设置的功能?

标签: java android decimalformat


【解决方案1】:
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));

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我在上面提到我可以这样做,但这并没有考虑到所有用户的语言环境。一些用户宁愿看到0,00 而不是0.00。是否有一种通用的方法来舍入和使用默认语言环境是我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多