以"0"结尾的浮点值不能用两个小数点表示



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

 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,因为浮点数无法容纳尾随的 0。 .format返回的String可以。 如果您尝试打印:

decimalFormat.format((float( value/100(

浮点数将正确打印。 删除此对.valueOf的调用,改为从currencyDecimalFormat返回String

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

最新更新