Java - 我的程序在应该向上舍入时却向下舍入

Java - My program is rounding down when it should be rounding up

我正在构建一个计算餐厅账单总成本的程序。我的程序将 18.135 美元四舍五入为 18.13 美元。这是我用来将其四舍五入到小数点后两位的代码:

tip = Math.round((charge * TIP_PERCENTAGE) * 100) / 100d;

所有变量都是双精度值,charge 等于 100.75,TIP_PERCENTAGE 等于 0.18。

我尝试了几件事,但我没有任何运气。我希望程序将 18.135 美元四舍五入到 18.14 美元。

试试这个

private static double round(double value, int places) {
   if (places < 0) throw new IllegalArgumentException();

   BigDecimal bd = new BigDecimal(Double.toString(value));
   bd = bd.setScale(places, RoundingMode.HALF_UP);
   return bd.doubleValue();
}

...

tip =(charge * TIP_PERCENTAGE) ;
tip = round(tip,2);