最寄りhundered-千分のへの丸め

Pingの:

最寄りhundered-千桁に数の小数点以下の桁数を切り上げしようとしたときに、私はこの問題に直面しています。

例:

BigDecimal num1 = BigDecimal.valueOf(0.38871551);
MathContext mc = new MathContext(5);
System.out.println(num1.round(mc));

出力がある0.38872として期待されています。すべての良い今のところ。のは、別の例を見てみましょう:

BigDecimal num1 = BigDecimal.valueOf(1.1680418);
MathContext mc = new MathContext(5);
System.out.println(num1.round(mc));

出力されます1.1680これはどこに問題がarrisesです。私が欲しいのはなるように出力されます1.16804が、丸めが食べるように見える4ことがあるとしてそれを残すのではなくを。

私は別の丸めモードを試してみましたが、これは私が得るものです:

  • RoundMode.UP 提供します 1.1681
  • RoundingMode.HALF_UPまたはRoundingMode.HALF_DOWN与える1.1680 ようにと...

私は、所望の出力を得るにはどうすればよいです:

  • 0.38871551 に丸める必要があります 0.38872
  • 1.1680418 に丸める必要があります 1.16804
  • 0.55052984 に丸める必要があります 0.55053

私も6位小数位の代わりに、第五に丸めてみましたが、私は上記のように私に所望の出力を与える適切な組み合わせを見つけることができませんよ。

グッド:

あなたはBigDecimalのsetScale関数でそれを試すことができます

num1 = num1.setScale(5, BigDecimal.ROUND_HALF_UP);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=118547&siteId=1