我有以下用于在 Java 中舍入双精度值的函数:
public static double round(double d, int decimalPlace) {
BigDecimal bd = new BigDecimal(Double.toString(d));
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
return bd.doubleValue();
}
作为输入,这个函数接收这些值:
double d = 7.3149999999999995;
int decimalPlace = 2
但是,当函数返回时,返回的值是 7.31,而不是 7.32。我在文档上搜索以了解为什么 bd.SetScale 具有这种行为,但没有成功。
有人可以解释为什么会这样吗?非常感谢!!