正如最高层所说。我陷入了一个相当简单的问题,但似乎我被卡住了。
实施例: x = 3.141
当我使用printf("x is: %.2f", x);
时
它吐出:X is 3.14
计算州税时,任何超过一美分的东西都需要四舍五入,所以3.141应该是3.15。是否有一个我可以修改的简单printf或我可以添加的其他标签?或者我需要进行一轮计算附加位?
答案 0 :(得分:3)
最简单的方法是在数字上加0.005。
PS:确保严格按BigDecimal计算所有内容。建议不要使用双倍的金钱。
答案 1 :(得分:3)
不使用printf
,而是DecimalFormat
使用RoundingMode.CEILING
:
DecimalFormat df = new DecimalFormat("#.##");
df.setRoundingMode(RoundingMode.CEILING);
String rounded = df.format(x)
System.out.printf("x is: %s", rounded);
答案 2 :(得分:0)
这是一个可能的解决方案:
public static float roundUp(float num, int positions) {
int tmp = ((int)(num*Math.pow(10, positions)));
tmp = tmp + 10 - tmp%10;
return ((float)(tmp/Math.pow(10, positions)));
}
您可以通过致电
获得所需内容roundUp(num, 3);
或者如果你想要一个不太通用的方法,你也可以使用:
public static float roundUp(float num) {
int tmp = ((int)(num*1000.0f));
tmp = tmp + 10 - tmp%10;
return ((float)(tmp/1000.0f));
}
答案 3 :(得分:0)
String
避免魔术舍入数字(你需要加0.9,或0.99,或0.999等)