4

私は2つのBigDecimalsActualとBudgetedを持っています。パーセントを算出するために、実績を予算で割っています。

私が抱えている問題は、いくつかの単体テストを構築しているときに、結果のBigDecimalが.1であることを確認しようとしていますが、try equals(new BigDecimal(.1))の場合、精度が2倍になるため失敗します。

これを克服するために私が考えていた方法は、2つのBigDecimals(10と100)を作成し、それら2つを分割して、それを使用してテストすることでした。このように、私は固定小数点数のみを使用しており、計算は正確に機能するはずです。

だから私の質問は:これを行うためのより良い方法はありますか?

4

2 に答える 2

7

compareToBigDecimalを使用する場合は、メソッドの代わりにメソッドを使用して「数値の同等性」テストを行う必要がありますequals

if (bigDecimal1.compareTo(bigDecimal2) == 0) { //then they are equals

cf. 詳細については、 javadocを参照してください。

また、他の人が述べているように、丸めの問題を回避するには、文字列コンストラクターを使用する必要があります。

于 2012-06-25T15:04:02.290 に答える
4

BigDecimaldocu)の文字列コンストラクタを使用できます。

 equals( new BigDecimal("0.1") );
于 2012-06-25T15:03:39.290 に答える