我想计算需要做一些舍入的法案
我的期望是:
它应该是最近的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时会出现错误。
右边,它应该向上舍入,但我的结果显示它向下舍入。
答案 0 :(得分:2)
要用美分表示货币值,您应该只使用整数(如美分),字符串或BigDecimal,而不是浮点数或双精度数,因为浮点值不能精确地表示所有小数值。
要向上舍入到逗号后的第一个数字,您可以执行以下操作:
BigDecimal value = new BigDecimal("10.17");
BigDecimal rounded = value.setScale(1, BigDecimal.ROUND_HALF_UP);