如何围绕我在java中转换为字符串的双精度?

时间:2013-09-11 22:09:41

标签: java string rounding

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

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

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

2 个答案:

答案 0 :(得分:5)

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

DecimalFormat df = new DecimalFormat("#.##");
txtTotalCost.setText("£" + df.format(totalCost));

答案 1 :(得分:1)

如果你只是想围绕显示目的(作为字符串),你就做对了。只需设置适合您的Roundmode:

DecimalFormat df = new DecimalFormat("#.##");
df.setRoundingMode(RoundingMode.HALF_EVEN);

txtTotalCost.setText("£" + df.format(totalCost));

请参阅:DecimalFormat rounding


如果你想计算舍入变量,你应该像这样四舍五入:

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/