3

まず、私の検索スキルが期待したほど良くない可能性があるため、この種の質問が既に存在する可能性があります。もしそうなら教えてください..

以下のコードを参照してください。

new BigDecimal("5").add(new BigDecimal("7"));

new BigDecimal("5").add(new BigDecimal("7"), mathContext);

mathcontext が本当に必要になるのはどのような状況ですか (除算を除く)?

何かを分割しない限り、私は mathcontext を使用しません。私の知る限り、これは常に機能していましたが、ここでの欠点は何でしょうか? 足し算、引き算、掛け算に mathcontext は必要ですか? 私は BigDecimal があまり得意ではありません。double を使用する場合のように、情報を失わないように使用したいだけです。何かを追加する際に mathcontext を使用するコードを時々目にするので、それが役に立たないというのが私の意見だからといって、単にそれを削除するのはあまりにも怖いです...


その質問を読みましたが、特定の質問に対する適切な答えが実際には見つかりませんでした... mathcontext なしで BigDecimals から始めて、それらで計算します。だから私の質問は、情報の損失/精度などに関してこれに欠点があるでしょうか? それとも、これは単に最大の情報につながるのでしょうか?

編集:丸めたくありません。もちろん、1/3 のような除算の場合は丸めを行う必要がありますが、加算、乗算、減算の場合は丸めを行いたくありません。その場合、どのような状況でも mathcontext が必要ですか?

4

2 に答える 2

1

数学演算を行っている場合は、丸めが必要です。

いくつかの小数部分を含む 2 つの数値を加算、減算、または乗算し、結果を丸めたい場合は、mathcontext も使用できます。

何も丸める必要がない場合は、必要ありません。

したがって、1/3 のように分割することによる無限の残りの問題を回避するためだけに限定されているわけではありません。

于 2015-05-28T07:44:17.200 に答える
0

結果を丸めたいが、オペランドを丸めたくない場合を想像できます。追加の例。

1.23 + 3.01 = 4.24

したがって、結果に小数点以下の桁数が必要な場合は、 a を使用MathContextしてそれを作成します

1.23 + 3.01 = 4.2

実世界の例はわかりませんが、それらが存在することは想像に難くないと思います。

于 2015-05-28T07:50:57.013 に答える