有人可以告诉我为什么这不起作用吗?我相信这是因为我正在尝试将字符串格式化为两位小数。但我不知道如何使输出四舍五入到小数位。
DecimalFormat df = new DecimalFormat("#.##");
String sTotalCost = Double.toString(totalCost);
txtTotalCost.setText("£" + df.format(sTotalCost));
在格式化之前不要将其转换为字符串:
DecimalFormat df = new DecimalFormat("#.##");
txtTotalCost.setText("£" + df.format(totalCost));
如果您只是为了显示目的而四舍五入(作为字符串),那么您做对了。只需设置适合您的 Roundmode:
DecimalFormat df = new DecimalFormat("#.##");
df.setRoundingMode(RoundingMode.HALF_EVEN);
txtTotalCost.setText("£" + df.format(totalCost));
请参阅:DecimalFormat 舍入
如果你想计算舍入变量,你应该像这样舍入它:
double roundedTotalCost = Math.round(totalCost*100.0)/100.0
见:http ://www.mkyong.com/java/how-to-round-double-float-value-to-2-decimal-points-in-java/