BigDecimal で終端のない 10 進数展開を処理するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-24 11:45:14
オリジナル
291 人が閲覧しました

How to Handle Non-Terminating Decimal Expansions with BigDecimal?

非終了 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート