[解決済み] ArithmeticExceptionです。"10進展開が終了しない; 正確に表現できる10進の結果がない"
2022-01-30 18:52:25
質問
以下のコードでは、なぜ以下のような例外が発生するのでしょうか?
BigDecimal a = new BigDecimal("1.6");
BigDecimal b = new BigDecimal("9.2");
a.divide(b) // results in the following exception.
例外です。
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
解決方法は?
からの
ジャバ11
BigDecimal
ドキュメント
:
を使用した場合
MathContext
オブジェクトが精度設定 0 で提供されている場合(例えば。MathContext.UNLIMITED
を取らない算術メソッドと同様に、算術演算は正確です。MathContext
オブジェクトを作成します。(これは5より前のリリースでサポートされていた唯一の動作です)。正確な結果を計算するための補足として、丸めモードの設定は
MathContext
オブジェクトの精度の設定が 0 の場合は使用されないので、無関係です。除算の場合、正確な商は無限に長い小数展開を持つ可能性があります;例えば、1を3で割ったものです。商が終端でない小数展開を持ち、演算が正確な結果を返すように指定されている場合、その商は
ArithmeticException
が投げられます。そうでない場合は、他の操作と同様に正確な除算結果が返されます。
修正するには、次のようにする必要があります。 :
a.divide(b, 2, RoundingMode.HALF_UP)
ここで、2はスケール、RoundingMode.HALF_UPは丸めモードです。
詳細は以下をご覧ください。 このブログの記事 .
関連
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】Android java.lang.IllegalStateException: Android java.lang.IllegalStateException: Could not execute method of the activity
-
[解決済み】「'void' type not allowed here」エラーの原因とは?
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み】Gradleがtools.jarを見つけ出さない
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み] Javaにおけるチェック済み例外とチェックされていない例外の理解
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー「No enclosing instance of type Foo is accessible」の原因と修正方法について教えてください。
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み】Mockitoでモックからチェックされた例外を投げる
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み】intがnullであるかどうかを確認する方法
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。