以“0”结尾的浮点值不能用两位小数表示

Float values which ends with '0' cant be denoted by two decimal points

我做了一个数字格式来指示货币值,如下所示:

 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));
}

发票class:

    private int amount;

    public int getAmount() {
    return amount;
  }

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

.5
.8
5.59

如何使其正确?

您的 Float.valueOf 正在重新格式化 float 以删除尾随 0,因为 float 不能容纳尾随 0。String.format returns 可以 。如果你尝试打印出来:

decimalFormat.format((float) value / 100)

浮点数将正确打印。从 currencyDecimalFormat 中删除对 .valueOf 和 return a String 的调用,改为:

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