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

Java 以'结尾的浮点值;0';不能用两个小数点表示,java,currency,number-formatting,formatter,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.curren

我使用数字格式表示货币值,如下所示:

 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));
}
但以“0”结尾的值未格式化为所需格式

$18.5
$16.8
$105.59

如何使之正确

您的
Float.valueOf
正在重新格式化
Float
以删除尾随的
0
,因为Float不能容纳尾随的0。
格式
返回的
字符串
。如果您尝试打印:

十进制格式((浮点)值/100)

浮点数将正确打印。删除对
.valueOf
的调用,并从
currencyDecimalFormat
返回
字符串

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