非終了 10 進数展開と BigDecimal の処理
BigDecimal オブジェクトを扱うときは、非終了の 10 進数展開の可能性を認識することが重要です。小数展開を終了します。次のコードを考えてみましょう。
BigDecimal a = new BigDecimal("1.6"); BigDecimal b = new BigDecimal("9.2"); a.divide(b)
このコードは 2 つの BigDecimal オブジェクトを除算しようとしますが、代わりに次の例外を発生させます。
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
この例外は、 b には終端のない 10 進展開があります。デフォルトでは、BigDecimal 操作は正確です。つまり、10 進数が無限に展開される場合でも、正確な結果が返されます。ただし、精度が 0 に設定されている場合 (デフォルト)、丸めモードは無視され、丸めは実行されません。
この例外を修正するには、丸めモードと精度を指定する必要があります。例:
a.divide(b, 2, RoundingMode.HALF_UP)
この場合、除算は精度 2 で実行され、結果は HALF_UP 丸めモードを使用して丸められます。これにより、有限 10 進展開が行われます。
BigDecimal を使用した非終了 10 進展開の処理の詳細については、Java ドキュメント、またはブログ投稿やチュートリアルなどの関連リソースを参照してください。
以上がBigDecimal で終端のない 10 進数展開を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。