我进行数字格式化以指示货币值,如下所示:
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
返回的 String
can。如果您尝试打印:
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/