有人可以告诉我为什么这不起作用?我有信心这是因为我正在尝试将字符串格式化为两位小数..但我不知道如何将输出舍入到小数位。
DecimalFormat df = new DecimalFormat("#.##");
String sTotalCost = Double.toString(totalCost);
txtTotalCost.setText("£" + df.format(sTotalCost));
答案 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));
如果你想计算舍入变量,你应该像这样四舍五入:
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/