怎么做四舍五入

时间:2017-05-11 10:16:49

标签: java rounding

我想计算需要做一些舍入的法案

我的期望是:

它应该是最近的10美分。 e.g:

10.17 -> 10.20 (round up)

10.11 -> 10.10 (round down)

我试过用:

grandTotal = Double.valueOf(String.format(Locale.ENGLISH, "%.2f", grandTotal));

但总体看起来像12.15,14.65,19.85时会出现错误。

右边,它应该向上舍入,但我的结果显示它向下舍入。

1 个答案:

答案 0 :(得分:2)

要用美分表示货币值,您应该只使用整数(如美分),字符串或BigDecimal,而不是浮点数或双精度数,因为浮点值不能精确地表示所有小数值。

要向上舍入到逗号后的第一个数字,您可以执行以下操作:

BigDecimal value = new BigDecimal("10.17");
BigDecimal rounded = value.setScale(1, BigDecimal.ROUND_HALF_UP);