最近、奇妙なJavaの2階の丸めについて質問し、代わりにBigDecimalsを使用するための回答を得たので、次のコードを試してみました。
BigDecimal velocity = new BigDecimal(-0.07);
BigDecimal afterMultiplyingBy200 = velocity.multiply( new BigDecimal(200.0) );
BigDecimal floored = afterMultiplyingBy200.setScale(0, RoundingMode.FLOOR);
System.out.println("After multiplication " + afterMultiplyingBy200);
System.out.println("floored value is " + floored);
そして、私は次の結果を得ています
After multiplication -14.000000000000001332267629550187848508358001708984375000
floored value is -15
BigDecimalを使用しても、-0.07に200を掛けた正しい値を取得できないようですが、正確に-14.0を取得するためにできることはありますか?