1

有人可以告诉我为什么这不起作用吗?我相信这是因为我正在尝试将字符串格式化为两位小数。但我不知道如何使输出四舍五入到小数位。

    DecimalFormat df = new DecimalFormat("#.##");
    String sTotalCost = Double.toString(totalCost);

    txtTotalCost.setText("£" + df.format(sTotalCost));
4

2 回答 2

5

在格式化之前不要将其转换为字符串:

DecimalFormat df = new DecimalFormat("#.##");
txtTotalCost.setText("£" + df.format(totalCost));
于 2013-09-11T22:12:25.590 回答
1

如果您只是为了显示目的而四舍五入(作为字符串),那么您做对了。只需设置适合您的 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/

于 2013-09-11T22:13:26.483 回答