以“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);
}
我做了一个数字格式来指示货币值,如下所示:
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);
}