Javaでdouble値を丸めるために使用される次の関数があります。
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.32ではなく7.31になります。ドキュメントを検索して、bd.SetScaleがその動作をしている理由を確認しましたが、成功しませんでした。
なぜこれが起こっているのか誰かに説明してもらえますか?どうもありがとう!!