我有一些简单的代码来四舍五入,但它产生了一些意想不到的结果。
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
double a = 46.66;
System.out.println("Roundup: " + roundUp(a,2) + "\nRound Down: " + roundDown(a,2));
}
public static double roundUp(double a, int scale)
{
BigDecimal value = new BigDecimal(a);
value = value.setScale(scale, RoundingMode.UP);
return value.doubleValue();
}
public static double roundDown(double a, int scale)
{
BigDecimal value = new BigDecimal(a);
value = value.setScale(scale, RoundingMode.DOWN);
return value.doubleValue();
}
当我使用小数点后 3 位时,它按预期工作。如果 a = 44.661,则输出如下所示。
综述:46.67 向下取整:46.66
当 a=44.66 时,向下舍入值减少 1,这是出乎意料的,如下所示。
综述:46.66 向下取整:46.65
如何在仍保留上述结果的同时获得 44.66 向下舍入和 44.67 向上舍入。
在此先感谢您的帮助