java - 以 '0' 结尾的浮点值不能用两位小数表示

标签 java currency number-formatting formatter

我进行数字格式化以指示货币值,如下所示:

 private static DecimalFormat decimalFormat = new DecimalFormat("0.00");

 List<String> paidAmounts = new ArrayList<>();

  for (Invoice invoice : invoices) {
    paidAmounts.add(String.valueOf
    ("$"+Formatter.currencyDecimalFormat(invoice.getAmount())));
   }

   public static Float currencyDecimalFormat(int value) {
    return Float.valueOf(decimalFormat.format((float) value / 100));
}

发票类别:

    private int amount;

    public int getAmount() {
    return amount;
  }

但是以“0”结尾的值未格式化为所需的格式。

$18.5
$16.8
$105.59

如何使这个正确?

最佳答案

您的Float.valueOf正在重新格式化float以删除尾随的0,因为float无法容纳尾随 0。.format 返回的 Stringcan。如果您尝试打印:

decimalFormat.format((float) value / 100)

float 将正确打印。删除对 .valueOf 的调用,并从 currencyDecimalFormat 返回一个 String:

public static String currencyDecimalFormat(int value) {
    return decimalFormat.format((float) value / 100);
}

关于java - 以 '0' 结尾的浮点值不能用两位小数表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57095672/

相关文章:

java - 任务队列 Java API

C#格式化数字的不同语法

Java 8 : Merge String[] and int[] into Object[] when verifying bytecode

java - 单击网格面板返回坐标

ruby-on-rails-2 - Rails 2 - 绝对的金钱

jquery - Jqgrid货币格式

android - 如何通过货币名称获取货币符号?

matlab - 如何以给定格式将数据保存到文本文件?

javascript - 使用不带货币符号的 Intl.NumberFormat 进行货币格式化

java - Realm - 对同一对象的多个操作。我的实现是否会影响性能?