2013-12-17 13 views
6

assertEqualsを実行するたびに、予想されるBigDecimalが丸められ、失敗することがあります。それはラウンドしないか、別の方法があることを確認するにはどうすればよいですか?BigDecimalをJUnit assertEqualsで丸めるのを強制するにはどうすればよいですか?

@Test 
public void test() { 
    BigDecimal amount = BigDecimal.valueOf(1000); 
    BigDecimal interestRate = BigDecimal.valueOf(10); 
    BigDecimal years = BigDecimal.valueOf(10); 
    InterestCalculator ic = new InterestCalculate(amount, interestRate, years); 
    BigDecimal expected = BigDecimal.valueOf(1321.507369947139705200000); 
    assertEquals(expected, ic.getMonthlyPaymentAmount()); 
} 
+0

正確に重複しているとは思わないが、もう1つの質問では.doubleValue()を呼び出す必要がありました。 –

答えて

19

BigDecimalコンストラクタを引用符で囲んでください。

BigDecimal expected = new BigDecimal("1321.507369947139705200000"); 

あなたがこれを行わない場合1321.507369947139705200000がリテラルdoubleあるので、数は、BigDecimalに最初doubleに変換し、かつます。それは本当にあなたが望むものではありません。

+0

ああ、ありがとう、ダビデ! – user10297

関連する問題